C C 佇列的實現和表示

2021-10-03 10:36:54 字數 2938 閱讀 9459

一、佇列的鏈式表示和實現

用鍊錶表示的佇列簡稱鏈佇列,乙個鏈佇列顯然需要兩個分別指示隊頭和隊尾的指標才能唯一確定

1.佇列的鏈式儲存結構

#define true 1

#define false 0

#define ok 1

#define error 0

#define infeasible -1

#define overflow -2

typedef

int status;

typedef

int qelemtype;

typedef

struct qnode

qnode,

*queueptr;

typedef

struct

linkqueue;

2.鏈佇列的基本操作

status initqueue

(linkqueue &q)

//構造乙個空佇列

status destroyqueue

(linkqueue &q)

//銷毀佇列

return ok;

}status clearqueue

(linkqueue &q)

//清空佇列

initqueue

(q);

return ok;

}status queueempty

(linkqueue q)

//判斷佇列是否為空

intqueuelength

(linkqueue &q)

//求佇列長度

cout<<

"佇列長度為:"

<

return ok;

}status gethead

(linkqueue q,qelemtype &e)

//用e返回隊頭元素

else

return error;

}status enqueue

(linkqueue &q,qelemtype e)

//插入元素e

status dequeue

(linkqueue &q,qelemtype &e)

//刪除隊頭元素並用e返回其值

二、佇列的順序表示和實現

和順序棧相類似,在佇列的順序儲存結構中,除了用一組位址連續的儲存單元依次存放從佇列頭到佇列尾,尚需附設兩個指標 front 和 rear 分別指示佇列頭元素及佇列尾元素的位置

1.迴圈佇列的儲存結構

#define true 1

#define false 0

#define ok 1

#define error 0

#define infeasible -1

#define overflow -2

typedef

int status;

#define maxqsize 100

//最大佇列長度

typedef

int qelemtype;

typedef

struct

sqqueue;

2.迴圈佇列的基本操作

status initqueue

(sqqueue &q)

//構造乙個空佇列

status destroyqueue

(sqqueue &q)

//銷毀佇列

status queueempty

(sqqueue q)

//判斷佇列是否為空

intqueuelength

(sqqueue q)

//求佇列長度

status enqueue

(sqqueue &q,qelemtype e)

//插入元素e為新的隊尾元素

status dequeue

(sqqueue &q,qelemtype &e)

//刪除隊頭元素,用e返回其值

三、c++標準模板類

1.deque類(雙端佇列)

deque模板類在deque標頭檔案中宣告(#include),在stl中,其實現類似於vector容器,支援隨機訪問。主要區別在於,從deque物件的開始位置插入和刪除元素的時間是固定的,而不像vector中那樣是線性時間。所以如果多數操作發生在序列的起始和結尾處,則應考慮使用deque資料結構

2.queue模板類

queue模板類在標頭檔案queue中宣告(#include),是乙個介面卡類

注意,pop() 是乙個刪除資料的方法,而不是檢索資料的方法。如果要使用佇列中的值,應首先使用front()來檢索這個值,然後使用pop()將它從佇列中刪除

鏈式佇列的表示和實現

2014年4月19日 鏈式佇列的實現 用頭結點來儲存鍊錶長度 儲存格式 儲存結構和單鏈表一樣 queue data next data next data next data 0 head node node 0 node 1 end node include include include inc...

佇列的鏈式表示和實現

佇列的鏈式表示和實現 帶頭結點的鏈式佇列 include 定義 typedef struct qnodeqnode,queueptr typedef structlinkqueue 初始化 演算法思想 生成乙個頭結點,是隊頭指標和隊尾指標都指向該頭結點,並將頭結點的指標域置空。int initque...

棧和佇列的表示及實現

鏈棧的表示 佇列的基本表示及操作 鏈佇列一般線性表 棧邏輯結構 一對一 邏輯結構 一對一 儲存結構 順序表 鍊錶 儲存結構 順序表 鍊錶 運算規則 隨機訪問 運算規則 後進先出 lifo adt stack 資料關係 r1 約定an端為棧頂,a1端為棧底。基本操作 adt stack利用一組位址連續...