資料結構第四章學習小結

2022-09-11 12:42:11 字數 1017 閱讀 3590

一、本章內容的小結

本章學習的資料結構在前面的學習已經打好了基礎。串其實就是string的抽象說法:在順序儲存下用法與string一樣;同時比以前多了一種鏈式儲存的方式。

本章最重要的內容是串模式匹配演算法:bf、kmp演算法。講真我覺得kmp演算法太難搞懂了(哭.jpg),神奇的是如果先找出模式串中重複的最長子串就能大大地提高效率,不過還沒明白為什麼。。還有下標的回溯也好亂。。。有一種好像大概能明白但不是非常清楚的感覺。太難受了。

廣義表是樹結構,線性表的推廣,其定義是乙個遞迴的定義。

二、完成作業或實踐時的心得體會

這一次pta的完成比上一次進步許多。

1)對於《串的模式匹配》那題,我沒有使用kmp演算法,用的是比bf演算法稍微好那麼一些的方法,所以結局是最後乙個測試點執行超時……需優化,但估計還得用kmp。我覺得可能在一步步的優化過程中就能理解kmp演算法了。

2)在做《求集合交集》時,與之前做的對比了一下,找到了不一樣的地方。

然後有兩種方法:

1. 兩個集合先排序再求交集

2. 先求交集再排序 

我嘗試分析了一下時間複雜度,覺得第2種方法更高效一些(尤其是當兩個集合元素很多但無交集的時候),但是覺得有些難操作(原因如下):

題目要求先輸出交集個數,再換行輸出交集元素。這意味著要先存好交集,不能找到乙個交集元素就輸出乙個。但是交集個數不確定,如果一下子開個c[100000]來存交集元素感覺有些浪費空間,再者記得之前說過在記憶體中連續開闢很長的空間是很難實現的(現實中記憶體空間比較碎),所以我想著用鍊錶存交集。但是問題又來了,,,(無奈.jpg)鍊錶不能隨機訪問,排序不像陣列那樣好操作…

於是最終採取第1種方法,更無奈的是也是最後乙個測試點超時了。或許用第2個方法同時用陣列存交集(放棄對空間的執著),說不定能通過。

三、沒有什麼分享的資料

四、上一階段的目標完成情況,接下來的目標

1)完成情況:92%完成度。

剩下的任務:kmp演算法 以及 作業跟實踐的**沒修改完。

2)接下來的目標(與原來一樣):完成、搞懂老師布置的所有討論、分組任務、作業和實踐

資料結構 第四章學習小結

第四章 串 陣列 廣義表 一.本章內容小結 1 串 字串 1.線性表通常以 單個元素 為操作物件 查詢,插入,刪除等 而串通常以 串的整體 為操作物件 插入刪除子串等 2.串分為順序儲存結構和鏈式儲存結構,其中鏈式儲存結構 為 define chunksize 80 定義的塊大小 typedef s...

資料結構 第四章學習小結

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

資料結構 第四章

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