首先是串的資料結構定義,一些標頭檔案和巨集定義等
#include
#include
#include
#include
#define maxsize 100
#define error 0
#define ok 1
using
namespace std;
typedef
char str[maxsize+1]
;typedef
int status;
接下來是串的初始化:
這裡的初始化我們用串的第乙個字元來表示傳中其餘的字元的個數就是串的長度,但實際上串的長度要加1,因為我們用了第乙個字元來記錄串的長度。
void
initstr
(str& s)
對於串賦值,把字元陣列ch的字元賦值給s;
status assignstr
(str& s,
char ch)
s[0]
= len;
return ok;
}}
得到串的長度,字元的個數(實際上可以直接用s[0]來獲得):
int
getlenstr
(str s)
來判斷串是否為空:
status emptystr
(str s)
將兩個串連線,即s3 = s1+s2:
status concatstr
(str s1, str s2, str &s3)
for(i = len1 +
1; i <= len1 + len2; i++
) s3[0]
= i;
return ok;
}
得到串s的第pos個字/符開始長度為len的串,並賦值給sub:
status substrstr
(str s, str& sub,
int pos,
int len)
sub[0]
= i-pos-1;
return ok;
}}
把串s2插入到s1的第pos個字元之後(如果插在字元之前只需很小的變動,直接把pos變成pos-1即可):
status insert_back_str
(str& s1, str s2,
int pos)
int i;
for(i =
1; i <= lens2; i++
) s1[0]
= lens1 + lens2;
return ok;}}
}
刪除串s的第pos個字元開始的長度為len的字元
status delete_back_str
(str& s,
int pos,
int len)
s[0]
= lens - len;
return ok;
}}
來遍歷一下串並輸出,輸出之後換行:
void
printstr
(str s)
cout << endl;
}
這裡是kmp演算法來進行字元的匹配:
void
getnext
(str t,
int next)
else k = next[k];}
}int
kmp(str s, str t,
int pos)
else}if
(j > lent)
return
(i - lent)
;else
return0;
}
資料結構的串就介紹到這裡。 串的基本操作(C )
include iostream using namespace std 串 兩個串是否相等,必須是它們串的長度以及它們各個對應位置的字元都相等時,才算是相等.串的順序儲存結構的缺點是字串的截斷,截斷就是超過預定義長度的串值被捨去.串的順序儲存 一般t 0 存放串的大小 const int maxs...
c 字串的操作
include include using namespace std string 型別 初始化string物件的方式 string str1 str1為空字串 string str2 abc 用字串字面值初始化str2 string str3 str2 將str3初始化為str2的乙個副本 st...
C 實現串的各項操作
如下 include using namespace std typedef struct str 定義串的結構體,變長分配 str intstrassign str str,char sh 賦值 if len 0 如果字串長度等於零 else 賦值一次,c向下下滑乙個元素 str.length l...