佇列的兩種實現方式—順序佇列、鏈式佇列
基本操作:
(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 完全二叉樹。...