21資料結構 串知識整理

2021-10-05 10:47:37 字數 2734 閱讀 2482

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...