複習:
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 中最常用的資料型別。我們可以使用引號 或 來建立字串。建立字串很簡單,只要為變數分配乙個值即可。...