資料結構04

2021-10-23 11:49:56 字數 1590 閱讀 5547

複習:

1、什麼是資料結構

是專門研究資料關係和操作的學科,而非是計算方法。

資料結構+演算法=程式

2、邏輯結構和物理結構

邏輯結構:

集合:除了同屬於乙個集合,資料之間沒有任何關係。

表:資料之間存在一對一關係。

樹:資料之間存在一對多關係。

圖:資料之間存在多對多關係。

物理結構:

順序結構:資料存在在連續的記憶體中,使用資料的相對位置來表示資料之間的關係。

鏈式結構:資料分散儲存在記憶體的任何位置,資料項中有一塊指標域用來表示資料之間的關係。

邏輯結構和物理結構的對應:

表:順序 鏈式

樹:鏈式 順序

圖:順序+鏈式

3、資料結構和運算

建立、銷毀、清空、新增、刪除、查詢、修改、排序、遍歷

4、表結構

順序表:陣列

鏈式表:鍊錶

常見面試題:陣列和鍊錶的優缺點?

5、功能受限的表

棧:只有乙個進出埠,先進後出。

有四種順序棧:

top初值:0 入棧 top++ 空增棧

top初始:-1 top++ 入棧 滿增棧

top初始:cal-1 入棧 top-- 空減棧

top初始:cal top-- 入棧 滿減棧

佇列:有兩個進出埠,乙個只能進,另乙個只能出,先進先出。

封裝鍊錶:

尾新增的效率低,非法下標的判斷也非常低。

1、單鏈表

節點:資料域

指標域資料項:

頭指標尾指標

節點數量

2、靜態鍊錶

節點:資料域

游標靜態鍊錶的節點儲存在連續的記憶體,通過遊戲來訪問下乙個節點。

這種鍊錶在插入刪除時只需要修改游標的值,而不用申請、釋放記憶體達到鏈式結構的效果。

但是也犧牲的隨機訪問的功能,是給沒有指標的編譯實現的一種單鏈表。

3、迴圈鍊錶

鍊錶的最後乙個節點的next不再指向null,面是指向頭節點,這種鍊錶叫單向迴圈鍊錶,簡稱迴圈鍊錶,它的好處理就是可以通過任何節點遍歷整個鍊錶。

4、雙向鍊錶

節點:前驅指標

資料域後繼指標

資料項:

頭節點節點數量

雙向鍊錶的特點:

1、從任何節點都可以遍歷整個鍊錶

2、已知節點的位置,可以選擇從前到後或從後到前進行遍歷,以此提高鍊錶的訪問效率。

5、linux核心通用鍊錶

鍊錶的節點不能包含萬物,那麼就讓萬物包含節點。

6、通用鍊錶

關於鍊錶常考的筆試面試題:

1、單鏈表逆序,在原鍊錶的基礎上進行調整。

node* p1.*p2.*p3;

2、找出鍊錶的倒數第n個節點。

先跑n次

while(n–)node=node->next;

3、判斷鍊錶中是否有環。

快慢指標

4、找出環形鍊錶的入口。

5、合併兩個有序鍊錶,合併後依然保持有序。

有序 合併

6、判斷兩個鍊錶是否是y型鍊錶。

判斷最後乙個節點指向是否相同

找出y型節點??

資料結構 佇列04

佇列是限制在兩端進行插入操作和刪除操作的線性表,允許進行存入操作的一端稱為 隊尾 允許進行刪除操作的一端稱為 隊頭 當線性表中沒有元素時,稱為 空隊 特點 先進先出 fifo 佇列的特徵 特殊的線性表,先進先出 fifo 1 資料 對於非空的佇列,表頭沒有直接前驅,表尾沒有直接後繼,其它有且僅有乙個...

資料結構與演算法(04)

josephu問題為 設編號為1 2,n的n個人圍坐一圈,約定編號為k 1 k n 的人從1開始報數,數到m的那個人出列,它的下一位又從1開始報數,數到m的那個人又出列,依次類推,直到所有人出列為止,由此產生乙個出隊編號的序列。1.約瑟夫問題 建立環形鍊錶的思路 a.先建立第乙個結點,讓first指...

Python基礎語法04 資料結構

python number 資料型別用於儲存數值。資料型別是不允許改變的,這就意味著如果改變 number 資料型別的值,將重新分配記憶體空間。python 支援四種不同的數值型別 字串是 python 中最常用的資料型別。我們可以使用引號 或 來建立字串。建立字串很簡單,只要為變數分配乙個值即可。...