佇列也比較的簡單,先進先出。流行的做法也是用陣列實現。
結構體如下:
struct queue
;#include
#include
struct queue
;typedef struct queue queue;
/*建立乙個空的佇列
形參代表這個佇列的長度最大是多少*/
queue *createqueue(int capacity)
/*判斷乙個佇列是否為空
為空的話返回1,否則返回0*/
int isempty(queue* q)
/*判斷乙個佇列是否為滿
滿的話返回1,否則返回0*/
int isfull(queue*q)
/*入隊*/
void inqueue(int x, queue* q)
q->size++;
q->num[q->rear++]=x;
if(q->rear ==q->capacity)
q->rear=0;//使用迴圈陣列方式
}/*出隊
返回元素的值*/
int outqueue(queue *q)
temp=q->num[q->front];
q->size--;
q->front++;
if(q->front==q->capacity)
q->front=0;
return temp;
}/*釋放佇列所佔的空間*/
void deletequeue(queue* q)
}
優先佇列ADT的實現
優先佇列是一種特殊的佇列,基於二叉堆實現,在插入 刪除元素上具有較好的演算法效能。由於二叉堆的高度為logn,故在插入 刪除元素時最多調整logn次,時間複雜度為o logn 給出優先佇列adt的 其中priority judge為優先順序判斷。一般來說,在插入 刪除操作時,優先順序較高的應往堆頂調...
迴圈佇列ADT實現(C )2018 3 15
include using namespace std 迴圈佇列adt 定義結點 struct qnode 迴圈佇列結構體 struct queue 初始化迴圈佇列 void init queue struct queue q 銷毀佇列 void destroy queue struct queue...
資料結構 佇列ADT的實現
佇列是一種特殊的線性表,資料元素之間是線性關係,其插入和刪除操作分別在兩邊進行,一端只能插入,另一端只能刪除。隊首 front 進行刪除操作的一端 隊尾 rear 進行插入操作的一端 入隊 在隊尾插入乙個元素 出隊 在隊首插入乙個元素 特性 元素的操作順序符合 先進先出 fifo 或 後進後出 li...