資料結構 串

2021-08-31 03:59:18 字數 2582 閱讀 6700

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個子串起...

資料結構 串

串 又稱字串 是一種特殊的線性表,它的每個結點僅由乙個字元組成。在早期的程式語言中,串僅在輸入或輸出中以直接量的形式出現,並不參與運算。隨著計算機的發展,串在文字編輯 詞法掃瞄 符號處理以及定理證明等許多領域得到越來越廣泛的應用。在高階語言中開始引入了串變數的概念,如同整型 實型變數一樣,串變數也可...