4.2 串的模式匹配演算法
串是由零個或多個字元組成的有限序列。串中的個數稱為串的串的長度,含有零個元素的串叫做空串。
char str=
"abcdef"
;//輸出字元直接
cout
namespace std;
intmain()
str[10]
='\0'
;//莫失莫忘,仙壽恆昌!
cout
}//輸出結果
//0123456789
字串輸出規則:
當我們寫cout1. 定長順序儲存表示
本書(2021天勤)的定義:給串尾加上『\0』
結束標記,同時也設定length;
結構體定義:
typedef
struct
str;
2. 變長分配儲存
也叫動態分配儲存,特點是:執行過程根據需要動態分配。
結構體定義:
typedef
struct
str;
使用時需要用函式malloc()來分配乙個長度為length、型別為char型的連續儲存空間,分配的空間可以用函式free()釋放掉。
(真的不是我要槓一下,我在串的定義寫的char *str(就是文章開頭),就沒用malloc(),照樣可以用,問題就是我的str沒有分配空間會抹除掉其他空間的資料。還是按照標準的malloc這樣分配連續的儲存空間比較好。)
3. 串的基本操作
幾種串的原子操作。(就是基石操作)
1.賦值操作
串的操作不能直接用「=」。因為串是乙個陣列。
string的比較:
(考試我不知道啊,但是比賽時建議用string,string不僅可以賦值還能判斷是否相等。)
//標頭檔案,也可以,但cstring是新的庫
#include
string str =
"123"
;string str2 =
"456"
;str2 = str;
//ok的
if(str2 == str)
//為真
cout<<
"true"
;
必須對每個元素逐一賦值操作。
strassign(),將常量字串賦值給str,操作成功返回1,否則返回0;
使用格式:
strassign(str,"test");
要點:
int
strassign
(str &str,
char
* ch)
if(str.length ==0)
else
}}
2.串的比較操作int
strcompare
(str s1,str s2)
3.串連線操作int
concat
(str &str,str str1,str str2)
str.ch =
(char*)
malloc
(sizeof
(char)*
(str1.length+str.length+1)
);if(str.ch==
null
)return0;
int i=0;
while
(iint j=0;
while
(j<=str2.length)
str.length = str1.length + str2.length;
}
4.求子串操作
實現從str串的pos位置開始,長度為len的字串,由substr返回給使用者。
int
substring
(str& substr,str str,
int pos,
int len)
//小心這種情況
if(len==0)
else
substr.ch[j]
='\0'
; substr.length = len;
return1;
}}
5.串清空操作int
clearstring
(str& str)
str.length =0;
return1;
}
注意:本節中的字元儲存在1~length的位置上,注意區分0~length-1的儲存位置。
(又稱為幼稚模式匹配演算法,後續kmp演算法)
思想:從主串的第一位置起和模式串的第乙個字元開始比較,如果相等就逐一比較後續字元;否則從第二個字元開始再重複前面的操作。
匹配成功返回模式串在主串中的位置;若匹配不成功,返回乙個可區別於主串所有位置的標記,比如「0」;
int
index
(str str,str substr)
else}if
(j>substr.length)
else
return0;
}
資料結構知識整理 鏈隊
初始化 入隊 出隊 取隊頭元素 棧和佇列是兩種重要的線性結構,與一般線性表不同,它們是操作受限的特殊線性表,主要用於輔助其他資料結構的操作和處理,基本不用於儲存資料元素資訊。佇列 queue 是一種先進先出 first in first out,fifo 的線性表。它只允許在表的一端插入,而在表的另...
資料結構上機2 1
include include define maxsize 50 typedef char elemtype typedef struct sqlist 尾插法線性表 void initlist sqlist l 初始化線性表 void destroylist sqlist l 銷毀線性表 boo...
資料結構2 1棧
stl 棧 本文是介紹關於棧的基礎知識,以及其stl 棧的使用。棧是一種基本的資料結構,滿足先進後出的基本原則 filo 該資料結構可以看作向井中放物品與取物品。如下圖 棧的模型可以通過多種途徑實現。較為常見的是陣列模擬棧,也可以以鍊錶模擬棧。陣列模擬棧 棧的結構需要儲存空間與棧頂的位置。int s...