字串的基本操作
串的線性儲存結構和基本運算的實現
串及其基本運算在程式中是如何實現的呢?串是在程式中比較常見的線性儲存結構,也就是用乙個連續的儲存空間把串的每乙個字元按照一定順序儲存起來。所以,在定義乙個串之前,我們得先申請乙個足夠可以容納字串的空間。
串的線性儲存**如下:
#define maxsize 100 /字串可能達到的最大長度/
typedef struct
seqstring;
1 串的賦值運算
空間定義好了,接著就要往空間裡儲存具體的字串了,也就是給串賦值。演算法**實現如下:
/將存放在字元陣列t中的串常量賦給s/
void assign(seqstring *s, char t)
s->ch[j] = t[j];
s->strlength = j;
printf("%s\n", s->ch);
}/assign/
2 求串的長度
每個串都有它的長度,length函式可以方便地求出串的長度。
int length(seqstring s)
/length/
3 判斷兩個串是否相等
判斷兩個串是否相等,要求串的長度以及串的每個字元所在的位置都要相等。演算法如下:
int equal (seqstring s,seqstring t)
/equal/
4 求子串
求子串的實現思路是,在已知的串裡尋找串的第i個位置之後長度為len的字串。演算法如下:
seqstring substr(seqstring s,int i, int len)
for (k=i; k< i+len; k++)
t.ch[len]= 『\0』;
t.strlength=len;
return(t);
}/substr/
5 串值的連線
以兩串連線為例,已知s串和t串,串的連線就是將s串和t串的首尾相連,變成乙個長度為s.strlength+t.strlength的新串。演算法實現如下:
/將t的串值連線到s的末尾/
seqstring concat(seqstring s, seqstring t)
for (k=s.strlength-1; k>=i; k–)
s->ch[k+ t.strlength] = s->ch[k];
for (k= i; kch[k] = t.ch[k-i];
s->ch[s->strlength + t.strlength] = ′\0′;
s->strlength = s->strlength + t.strlength;
}/insert/
7 刪除子串
刪除子串的實現思路是在已知串s中,從第i個字元以後把第i+len個字元覆蓋第i+1個字元,第i+len+1個覆蓋第i+2個,如此類推,一直到′\0′結束,最後修改串的長度。
void delete (seqstring *s, int i, int len)
else
}/delete/
本文有**教材
字串基本操作
include unsigned int strlenth char s 獲取字串長度 return lenth void strcopy char target,char source 字串拷貝 int strcompare char s,char t 字串比較,s t,則返回1 s t,則返回0...
字串基本操作
遞迴求字串長度 int recurlength char str 字串中最後乙個引數的長度 int lastwordlen char str,int len int lastwordlen char str return lastlen 字串記憶體的拷貝 實現memmove函式 char my me...
字串基本操作
判斷字串開頭結尾字元 string.startswith l 判斷字串是否以l開頭 string.endswith n 判斷字串是否以n結尾 返回字串中字元的位置 string.find x 找到這個字元返回下標,多個時返回第乙個 不存在的字元返回 1 string.index x 找到這個字元返回...