結構筆記 串的基本操作及串的模式匹配演算法

2022-03-20 04:57:44 字數 1451 閱讀 2334

下面實現幾種串的基本操作,這些操作是構成串其他複雜操作的基石。因為相對簡單,功能和分析的說明均在**實現中。

/*

動態分配儲存結構

*/typedef

struct

str;

/*賦值操作

*/int strassign(str &str, char *ch)

if(len == 0) //

如果ch為空串,則直接返回空串

str.ch = (char*)malloc(sizeof(char) * (len+1)); //

取len + 1是為了多分配乙個空間存放「\0」字元

if(str.ch == null) //

申請空間失敗

return0;

c =ch;

for(int i = 0; i <= len; i++) //

注意:迴圈條件"<="是為了將ch最後的'\0'複製到新串中作為結束標誌

str.ch[i] = *(c++);

str.length =len;

return1;

}/*求串長度

*/int

strlength(str str)

/*串比較操作

*串的比較操作是串排序的核心操作

*/int

strcompare(str s1, str s2)

return s1.length -s2.length;}/*

串連線操作

*將兩個串首位連線,合成乙個字串的操作稱為串連線操作

*/int concat(str &str, str s1, str s2)

/*求子串操作

*求從給定串中某一位置開始到某一位置結束的操作稱為求子串操作(規定開始位置總是在結束位置前邊)

*以下**實現求串中從pos位置開始,長度為len的子串,子串由substr返回給使用者

*函式返回:成功1,失敗0

*/int substr(str &substr, str str, int pos, int

len)

substr.ch = (char*)malloc(sizeof(char) * (len+1

));

if(substr.ch ==null)

return0;

int i = 0, j =pos;

while(j < pos +len)

substr.ch[i++] = str.ch[j++];

substr.ch[i] = '\0'

; substr.length =len;

return1;

}/*串清空操作

*/int clearstr(str &str)

str.length = 0

;

return1;

}

串的匹配模式演算法

資料結構實驗 串的定義,基本操作及模式匹配

掌握這種抽象資料型別的特點 熟練掌握串的順序儲存結構表示和基本操作,並能利用這些基本操作實現串的其他各種操作。分別用兩種儲存方式實現 串的定長順序儲存實現 串的定長順序儲存結構 include include include define true 1 define false 0 define o...

串 堆串的基本操作

順序串為靜態順序儲存表示,在串的插入,連線過程中如果長度超過了maxsize就會截掉一部分。因此可以使用動態分配儲存表示串 pragma once include include includetypedef struct heapstring void initsring heapstring s...

串的基本操作

include include include include define maxn 50 define ok 1 define error 0 typedef struct strnode snode void creat snode char 建立串 int getsubstr snode i...