下面實現幾種串的基本操作,這些操作是構成串其他複雜操作的基石。因為相對簡單,功能和分析的說明均在**實現中。
/*動態分配儲存結構
*/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...