資料結構**
2.棧和佇列
二、樹三、圖
線性結構是一種基本的資料結構,主要用於對客觀世界中具有單一前驅和後繼的資料關係進行描述。線性結構的特點是資料元素之間呈現一種線性關係,即元素「乙個接乙個排列」。
線性表常採用順序儲存和鏈式儲存,主要的操作是「插入」、「刪除」、「查詢」。
線性表的順序儲存是指用一組位址連續的儲存單元依次儲存線性表中的資料元素,從而使得邏輯上相鄰的兩個元素在物理位置上也相鄰。
在表長為n的線性表插入新元素,共有n+1個插入位置。等概率下,插入乙個新元素需要移動的元素個數期望值e為n/2。
在表長為n的線性表中刪除元素時,共有n個可刪除的元素。在等概率下刪除元素時需要移動的元素個數期望值e為**(n-1)/2**。
圖1 線性表的單鏈表儲存
單鏈表節點型別定義:
typedef
struct nodenode,
*linklist;
在鏈式儲存結構中,只需要乙個指標(稱為頭指標,如上圖head)紙箱第乙個節點,就可以順序地訪問到表中的任意乙個元素。
單鏈表中,在p所指節點後插入新元素節點(s所指節點):
s->next = p->next;
p->next = s;
在單鏈表中刪除p所指節點的後繼節點:
q = p->next;
p->next = p->next->next;
//寫成p->next = q->next也可
free
(q);
每個節點包含兩個指標,分別指出當前元素的直接前驅和直接後繼。其特點是可以從表中任意的節點出發,從兩個方向上遍歷鍊錶。
在雙向鍊錶中插入節點*s:
s->front = p->front;
p->front->next = s;
s->next = p;
p->front = s;
在雙向鍊錶中刪除節點:
p->front->next = p->next;
p->next->front = p->front;
free
(p);
棧:棧是只能通過訪問它的一端來實現資料儲存和檢索的一種線性資料結構。棧的修改是按先進後出的原則進行的。
棧的儲存結構:
(1)順序儲存
(2)棧的鏈式儲存
(3)棧的應用:棧的典型應用包括表示式求值,括號匹配等,在計算機語言的實現以及將遞迴過程轉變為非遞迴過程的處理中,棧有重要的作用。
佇列:佇列是先進先出的線性表,它只允許在表的一端插入元素,而在表的另一端刪除元素。允許插入元素的一端稱為隊尾,允許刪除元素的一端稱為隊頭。
佇列的儲存結構
(1)佇列的順序儲存
(2)佇列的鏈式儲存
(3)佇列的應用:佇列結構常用於處理需要排隊的場合。例如作業系統中處理列印任務佇列、離散事件的計算機模擬等。
樹是n(n>=0)個結點的有限集合,當n=0時稱為空樹。在任一非空樹(n>0)中,有且僅有乙個稱為根的結點;其餘結點可分為m(m>=0)個互不相交的有限子集t1,t2,……,tm,其中,每個ti又都是一棵樹,並且稱為根節點的子樹。
樹的定義是遞迴的,它表明了樹本身的固有特性,也就是一棵樹由若干棵子樹構成而子樹又由更小的子樹構成。
若深度為k的二叉樹有2^k-1個結點,則稱為滿二叉樹:
可以對滿二叉樹中的結點進行連續編號:約定編號從根結點起,自上而下、自左至右依次進行。
深度為k、有n個結點的二叉樹當且僅當每乙個結點都與深度為k的滿二叉樹中編號從1至n的結點一一對應時,稱為完全二叉樹:
前序遍歷:根節點->左子樹->右子樹(根->左->右)
中序遍歷:左子樹->根節點->右子樹(左->根->右)
後序遍歷:左子樹->右子樹->根節點(左->右->根)
在圖中,任意兩個結點之間都可能有直接的關係,圖中的乙個結點的前驅結點和後繼結點的數目是沒有限制的。
有向圖:所有邊都有方向的圖稱為有向圖。
無向圖:圖中每條邊都是無方向
完全圖:若乙個無向圖具有n個頂點,而每乙個頂點與其他n-1個頂點之間都有邊,則稱之為無向完全圖。
深度優先搜尋dfs:
廣度優先搜尋bfs:
聊一聊Redis的資料結構
如果沒有記錯的話,應該是在兩個月前把 redis設計與實踐 這本書啃完了,確實是一本講redis的不可多得的好書,但是一直遲遲沒有寫自己的一些總結。一來是因為沒有時間,二來是沒有找到乙個合適的思考點。redis本身支援很多種不同的型別,能讓我們在不同的複雜的業務邏輯中游刃有餘。redis也可以說是萬...
聊一聊元資料
這個話題來自我的msn space。這是原文 元資料 metadata 這個詞現在到處氾濫。其實我對元資料充其量只能說有自己的理解而已,並不能確信這個理解是正確的。我認為,資料結構分為三個層次 uml可是四層哦 例項層 直接描述特異化的資料場景 元資料層 描述例項的結構的一組資料 元資料的元資料層 ...
聊一聊hive資料傾斜
info基本資訊表 user id name agegender 1henry16男 2jack17男 3anny18女 4candy19女 5kate20女 burke 21frank 22ellen 23ken 24mili 25.score成績表 user id subject id scor...