1、串的概念
字串簡稱串,是一種特殊的線性表,它的資料元素僅由乙個字元組成。
2、串的定義
串(string)是由零個或多個字元組成的有限序列,又稱字串。
其中s是串名,用雙引號括起來的字串行為串值,但引號本身並不屬於串的內容。ai(1<=i<=n)是乙個任意字元,它稱為串的元素,是構成串的基本單位,i是它在整個串中的序號;n為串的長度,表示串中所包含的字元個數。
3、術語描述
(1)長度–串中字元的個數,稱為串的長度。
(2)空串–長度為零的字串稱為空串。
(3)空格串–由乙個或多個連續空格組成的串稱為空格串。
(4)串相等–兩個串相等,是指兩個串的長度相等且對應的字元都相等。
(5)子串–串中任意連續的字元組成的子串行稱為該串的子串。
(6)主串–包含子串的串為該子串的主串。
(7)模式匹配–子串的定位運算又稱為模式匹配,是乙個求子串的隊醫給字元在主串中序號的運算。被匹配的主串稱為目標串,子串稱為模式。
字串場長度為n,子串個數為:n(n+1)/2+1 注:1為空串
串實現1.初始化
2.拷貝
3.鏈結
4.插入
5.刪除
6.判斷是否相等
#include #include #include typedef struct string
string,*pstring;
void strassign(pstring pstring, char* sub)
int len = strlen(sub);
pstring->pstr = (char*)malloc(len + 1);
if (pstring->pstr == null)exit(0);
for (int i = 0; i < len; ++i)
pstring->pstr[len] = '\0';
pstring->curlen = len;
pstring->totallen = len + 1;
}void strcopy(pstring ps1, pstring ps2)
int len1 = ps1->curlen;
int len2 = ps2->curlen;
if (len2 >= ps1->totallen)
int i = 0;
for (i; i < len2 + 1; ++i)
ps1->curlen = len2;
}void strcat(pstring ps1, pstring ps2)
int len1 = ps1->curlen;
int len2 = ps2->curlen;
if (len1 + len2 >= ps1->totallen)
free(ps1->pstr);
ps1->pstr = pnewstr;
ps1->totallen = len1 + len2 + 1;
} for (int j = 0; j < len2 + 1; ++j)
ps1->curlen = len1 + len2;
}bool strinsert(pstring ps1, int pos, pstring ps2)
int len1 = ps1->curlen;
int len2 = ps2->curlen;
if (len1 + len2 >= ps1->totallen)
free(ps1->pstr);
ps1->pstr = pnewstr;
ps1->totallen = len1 + len2 + 1;
} for (int index = len1; index >= pos; index--)
for (int i = 0; i < len2; ++i)
ps1->curlen = len1 + len2;
return true;
}bool strdelete(pstring ps, int pos, int len)
int index = pos + len;
for (index; index <= ps->curlen; index++)
ps->curlen = ps->curlen - len;
return true;
}bool strequal(pstring ps1, pstring ps2)
if (ps1->curlen != ps2->curlen)
for (int i = 0; i < ps1->curlen; i++) }
return true;
}void print(pstring ps)
int i = 0;
for (i; i < ps->curlen; ++i)
printf("\n");
}void destroyed(pstring ps1)
free(ps1->pstr);
ps1->pstr = null;
ps1->curlen = ps1->totallen = 0;
}
資料結構 串
輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。結果請按字母順序輸出。我們求整個字串的排列,可以看成兩步 首先求所有可能出現在第乙個位置的字元,即把第乙個字元和後面所有的字元交換。第...
資料結構 串
串名 串值 串長 空串 空格串。字串的比較 字串模式匹配演算法 1.簡單字串模式匹配演算法 最簡單實現是用字串p的字元依次與字串t中的字元進行比較。實現思想是,首先將子串p從第0個字元起與主串t的第pos個字元起依次比較對應字元,如全部對應相等,則表明已找到匹配,成功終止。否則將子串p從第0個子串起...
資料結構 串
串 又稱字串 是一種特殊的線性表,它的每個結點僅由乙個字元組成。在早期的程式語言中,串僅在輸入或輸出中以直接量的形式出現,並不參與運算。隨著計算機的發展,串在文字編輯 詞法掃瞄 符號處理以及定理證明等許多領域得到越來越廣泛的應用。在高階語言中開始引入了串變數的概念,如同整型 實型變數一樣,串變數也可...