資料結構 5 22知識點

2021-10-06 09:34:17 字數 2151 閱讀 6803

佇列的兩種實現方式—順序佇列、鏈式佇列

基本操作:

(1)初始化佇列 initqueue(q)

(2)入隊 enqueue(q,item)

(3)出隊 dequeue(q,item)

(4)獲取隊頭元素內容 gethead(q,item)

(5)判斷佇列是否為空 queueempty(q)

實現演算法—儲存結構

1、順序儲存結構實現佇列

隊頭,隊尾指標。front儲存隊頭元素所在下標,當出隊時,front++,而rear儲存隊尾元素的下乙個元素的下標,即可以直接入隊的下標sq[rear]=e;入隊後,rear++;此時會出現假溢位的情況===》順序迴圈佇列(不能擴容)

if(rear==size-1)//對front的控制同rear

rear=0;

else rear ++;

或rear++;if(rear==size)rear=0;

解決佇列演算法中的兩種特殊情況(隊空、隊滿)

隊空:length== 0

隊滿:length==size;

typedef struct sq;//sq是新起的別名

----基本演算法實現----

2、rear++; if(rear==size) rear=0;//1和2等價

typedef struct sq;

(1)初始化佇列 initqueue(q)

status initqueue(sq *q)

入隊enqueue(q,item)

status enqueue(sq *q,qelemtype e )

(3)出隊 dequeue(q,item)//返回隊頭元素,然後刪除

status dequeue(sq *q,qelemtype *pe)

status dequeue1(sq *q,qelemtype *pe)

(4)獲取隊頭元素內容 gethead(q,item)

status gethead(sq q,qelemtype *pe)

(5)判斷佇列是否為空 queueempty(q)

int queueempty(sq q)

同時也可以通過少用乙個空間,隊滿時陣列還有乙個空餘位置來解決隊滿的問題

typedef struct sq;

(1)初始化佇列 initqueue(q)

status initqueue(sq *q)

(2)入隊 enqueue(q,item)

status enqueue1(sq *q,qelemtype e )

q->sq[q->rear]=e;

q->rear++;

return ok;

}(3)出隊 dequeue(q,item)//返回隊頭元素,然後刪除

status dequeue1(sq *q,qelemtype *pe)

(4)獲取隊頭元素內容 gethead(q,item)

status gethead(sq q,qelemtype *pe)

(5)判斷佇列是否為空 queueempty(q)

int queueempty(sq q)

鏈式佇列基本演算法實現

typedef struct nodelinq;

typedef struct linqu;

等價於typedef structlinqu;

注意typedef定義別名的使用,同時優先考慮隊空、隊滿的問題

資料結構 知識點

定義 度 兒子數 分支節點 除了根和葉子的節點 根的深度為1 資料結構的分類 資料結構分為邏輯結構和物理結構。邏輯結構 表現資料之間的關係的一種資料結構,分為線性結構和非線性結構。物理結構 表現資料如何儲存的一種資料結構,通常分為順序結構 鏈式結構 索引結構和雜湊結構。有序表,也叫有序線性表,資料按...

資料結構知識點

1 線性結構與非線性結構 線性結構 線性表,棧,隊 乙個根節點,最多乙個前節點乙個後節點 首節點無前節點,尾接點無後節點 非線性結構 樹形結構,圖形結構 線性表 由一組資料元素構成,資料元素的位置只取決於自己的序號 陣列 棧 限定只能在表的一端進行插入和刪除,先進後出,只能在棧頂進出 佇列 只能在表...

資料結構,知識點

二叉樹 定義 二叉樹在圖論中是這樣定義的 二叉樹是乙個連通的無環圖,並且每乙個頂點的度不大於3。有根二叉樹還要滿足根節點的度不大於2。基本概念 二叉樹是遞迴定義的,其結點有左右之分,邏輯上二叉樹有五種基本形態 1 空二叉樹 2 只有乙個根節點的二叉樹 3 只有左子樹 4 只有右子樹 5 完全二叉樹。...