資料結構 第四章學習小結

2022-08-03 00:39:12 字數 1650 閱讀 6046

第四章 串 陣列 廣義表

一.本章內容小結

(1)串(字串)

1.線性表通常以「單個元素」為操作物件(查詢,插入,刪除等),而串通常以「串的整體」為操作物件(插入刪除子串等)。

2.串分為順序儲存結構鏈式儲存結構,其中鏈式儲存結構**為:

#define chunksize 80  //

定義的塊大小

typedef

struct

chunkchunk;

typedef

struct

lstring;

3.串的模式匹配演算法——子串的定位運算(bf演算法或kmp演算法

bf演算法:最好最壞情況下平均時間複雜度均為o(n+m)

kmp演算法:較bf演算法為改良後的演算法,模式匹配演算法更易操作,其中常見模式匹配演算法**為:

int index_kmp(sstring s,sstring t,int

pos)

else j = next[j];//

模式串向右移動

}

if(j > t[0]) return i - t[0];//

匹配成功

else

return

0;//

匹配失敗

}

(2)陣列(下標訪問元素)

定義:分為一維陣列,二維陣列,和多維陣列。

(3)廣義表

是一種遞迴的線性表結構。

二、作業心得體會

本次作業及實踐——串的模式匹配和求兩整數集合交集

在書本上學習到了next函式及其修正值的方法,剛開始只用主函式考慮,經常跑不了,有了這個函式就方便多了:

int* getnext(string t)  //

求模式串t的next函式值並放入next陣列

else j=next[j];//

若字元不匹配,求出字元對應的next值

}

return next;//

因為是指標函式 ,所以返回next陣列首位址

}

求交集那道程式設計題,可能是用熟悉的陣列的原因,剛開始在判斷交集元素的那個迴圈體中執行出現了問題,最後將二維的迴圈寫成了同時滿足的一條迴圈體就成功了。

三、推薦資料或書籍

四、目標完成情況

上次提到的日常練習敲**和課前預習都有在逐步實現,雖然暫時還沒有做到足夠的預習準備,**也經常不能將以前敲過的一次都沒有bug,也偶爾需要查閱課本才能寫出演算法。但相比以前,我在看題目時,腦子裡會開始慢慢有了**的思路,雖然也許邏輯會不夠完整,但自己能感受到自己也有在進步,這一點讓自己很開心也希望能堅持下去。

接下來的目標:對之前幾章的作業實踐題繼續鞏固練習敲幾遍,課前預習,上課時積極參與討論和回答問題環節,有問題及時解決並做好記錄,方便以後出現同樣問題時能及時處理好。

資料結構 第四章學習小結

子串在主串中的位置則以子串的第乙個字元在主串中的位置 字元在序列中的序號 來表示 乙個或多個空格組成的串 稱為空格串 其長度為串中空格字元的個數 4.2 案例引入 4.3 串的型別定義 儲存結構及其運算 串的儲存結構 鏈式儲存 串的模式匹配演算法 kmp演算法 4.4 4.7 4.5 廣義表 廣義表...

資料結構第四章學習小結

一 本章內容的小結 本章學習的資料結構在前面的學習已經打好了基礎。串其實就是string的抽象說法 在順序儲存下用法與string一樣 同時比以前多了一種鏈式儲存的方式。本章最重要的內容是串模式匹配演算法 bf kmp演算法。講真我覺得kmp演算法太難搞懂了 哭.jpg 神奇的是如果先找出模式串中重...

資料結構 第四章

第四章 字串和多維陣列 4.1 字串 4.1.1 字串的定義 1.字串的定義 字串是零個或多個組成的有限序列,只包含空格的串成為空格串。串中所包含的字元個數成為串的長度,長度為0的串為空串,記作 乙個非空串通常該記作 s s1,s2 sn 字串中任意個連續的字元組成的子串行稱為該串的子串,相應地,包...