資料結構 學習總結一

2022-08-22 09:21:08 字數 2718 閱讀 2505

1.概念:最簡單,最常用的線性結構。

2.線性表的順序儲存結構

實現隨機儲存

3.線性表的鏈式結構

節點=資料元素+指標

資料元素:存放資料

4.頭插法

void createlistf(liklist*& l, elemtype a, int n)

}

思路:生成乙個空鍊錶,不斷的將新節點插入煉表表頭,鍊錶的節點順序與邏輯次序相反。

5.尾插法

void createlistr(linklist*& l, elemtype a, int n)

r->next = null;//尾節點next域設定為null

}

思路:將新節點始終插入煉表表尾,需要乙個尾指標r。鍊錶的節點順序與邏輯次序相同

只能在一段進行插入,刪除的線性表。

1.按儲存形式分為:順序棧,鏈棧。

2.順序棧

1.初始化棧:棧頂元素為-1;s->top=-1。

2.判斷棧是否為空:判斷棧頂指標是否為-1。

3.進棧:元素進棧前要判斷棧頂是否滿。

4.出棧:先確定棧不為空。

5.取棧:先確定棧不為空。

*順序棧四要素:

棧空條件:s->toop=-1;

棧滿條件:s->top=maxsize=-1;

進棧操作:s->top++;

出棧操作:s->top--;

3.鏈棧

1.棧的鏈式儲存結構是單鏈表,包含指向下乙個節點的指標域,資料域。

2.判斷棧是否為空,只需要判斷頭節點next的值是否為空。

3.出棧:需先判斷棧是否為空。

4.取棧:需先判斷棧是否為空。

*鏈棧四要素:

棧空條件:s->next=null;

棧滿條件:無需考慮;

進棧操作:將新資料節點插到頭節點後;

出棧操作:取出頭節點之後的節點資料域並刪除;

只能在一段進行插入,另一端進行刪除的線性表

1.按儲存結構分為:順序佇列,鏈佇列。

2.順序佇列

1.由一塊連續的儲存區域,和兩個分別指向隊頭,隊尾位置的變數組成。

2.隊空:front=rear

3.隊滿:(rear+1)%maxsize=front

4.入隊:rear=(rear+1)%maxsize

5.出隊:front=(front+1)%maxsize

3.鏈隊

1.單鏈表,由儲存佇列元素的資料節點,指向隊頭隊尾指標的鏈隊節點。

2.隊空:q->rear=null

3.入隊:將新的資料節點插到單鏈表表尾

3.出隊:刪除單鏈表的第乙個資料節點

1.由零個或多個字元組成的有序序列,操作物件是串的整體,串僅處理字元型別

2.串模式的匹配演算法

a.bf演算法:指標不停的回溯,時間複雜度不定,較高。

b.kmp演算法 主串不需回溯i指標,將模式串向右「滑動」盡可能遠的一段距離。

1.需自我呼叫。

2.遞迴必須有出口。

對next和nextval函式的認識

next陣列求解方法:

第一位的next值為0,第二位的next值為1,後面求解每一位的next值時,根據前一位進行比較。首先將前一位與其next值對應的內容進行比較,如果相等,則該位的next值就是前一位的next值加上1;如果不等,向前繼續尋找next值對應的內容來與前一位進行比較,直到找到某個位上內容的next值對應的內容與前一位相等為止,則這個位對應的值加上1即為需求的next值;如果找到第一位都沒有找到與前一位相等的內容,那麼需求的位上的next值即為1。

*如何尋找前字尾

1.找字首時,要找除了最後乙個字元的所有子串。

2.找字尾時,要找除了第乙個字元的所有子串。

現在有串p=abaabca,各個子串的最大公共前字尾長度如下表所示:

用一道題來解釋

模式串s: abaabcac

分析next陣列

1.一般來說,next陣列的第一位為0,第二位為1,第三位的時候我們就觀察模式串的前兩位,發現是a,b

2.這時我們就要做最長字首字尾的匹配,算出最大的公共元素長度,然後再加1,就是這一位的next的值。

3.第三位a的前兩位是a和b,最大公共元素長度為0,所以該位的next的值是1.

分享nextval陣列

1.求nextval[i]的值,我們要比較string[i]和string[next[i]]的值。

2.如果string[i]和string[next[i]]的字元相等,那麼nextval[i]的值就等於nextval[next[i]]的值。

3.如果string[i]和string[next[i]]的字元不相等,那麼nextval[i]的值就等於next[i]的值。

資料結構學習總結(一)

演算法的時間複雜度,即演算法的時間量度t n 一般來說,依賴於問題的規模n。通常演算法中基本操作被重複執行的次數是問題規模n的某個函式f n 演算法的時間複雜度主要分析t n 的數量級,而演算法中基本運算的頻度f n 和t n 是同數量級的,演算法的時間量度記作 t n o f n 其中 o 的含義...

資料結構學習總結

了解資料,資料項,資料元素,資料物件的關係。資料元素 組成資料的,具有一定意義的基本單位,在計算機中做整體處理,也稱為記錄。乙個資料元素可以由多個資料項組成。資料物件 資料相同的資料元素的集合,是資料的子集。有的書上也成為資料物件和例項,結合的理解。資料結構可以分為 物理結構和邏輯結構 邏輯結構 集...

資料結構學習總結

隨著2015年的結束,資料結構這門課程也即將結束,這乙個學期跟著賀老師一起通過翻轉課堂的方式學習既新鮮也很慶幸。對這一學期資料結構的學習我想說一說我的感受。這學期資料結構 學了線性結構 樹 圖等等 線性結構包括線性表 棧 佇列 串 陣列 廣義表等 遞迴是程式設計中很重要的一種工具 也是我需要掌握的乙...