佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為入隊,從佇列中刪除乙個佇列元素成為出隊。佇列中沒有元素時,稱為空佇列。因為佇列只允許在一段插入,在另一端刪除,所以只有最早進入佇列的元素才能最先從佇列中刪除,故佇列又稱為先進先出(fifo—first in first out)線性表。
一、佇列的陣列實現
佇列的順序儲存結構通常由乙個一維陣列、乙個記錄佇列頭元素位置的變數front、乙個記錄佇列尾元素位置的變數rear以及記錄佇列元素個數的變數size組成。
#include #include #define elementtype int //儲存資料元素的型別
#define maxsize 6 //儲存資料元素的最大個數
#define error -99 //elementtype的特殊值,標誌錯誤
typedef struct queue;
queue* createqueue()
q->front = -1;
q->rear = -1;
q->size = 0;
return q;}
int isfullq(queue* q)
void addq(queue* q, elementtype item)
q->rear++;
q->rear %= maxsize;
q->size++;
q->data[q->rear] = item;}
int isemptyq(queue* q)
elementtype deleteq(queue* q)
q->front++;
q->front %= maxsize; //0 1 2 3 4 5
q->size--;
return q->data[q->front];}
void printqueue(queue* q)
printf("列印佇列資料元素:\n");
int index = q->front;
int i;
for (i = 0; i < q->size; i++)
printf("\n");}
int main(int argc, const char * ar**)
二、佇列的鍊錶實現
佇列的鏈式儲存結構也可以用乙個單鏈表實現。插入和刪除操作分別在鍊錶的兩頭進行。佇列指標front指向鍊錶頭部方便刪除操作,佇列指標rear指向鍊錶尾部方便插入操作。
#include #include #define elementtype int
#define error -99 //elementtype的特殊值,標誌錯誤
typedef struct node qnode;
typedef struct queue;
queue* createqueue()
q->front = null;
q->rear = null;
return q;}
void addq(queue* q, elementtype item)
qnode->data = item;
qnode->next = null;
if (q->front == null)
if (q->rear == null)
else }
int isemptyq(queue* q)
elementtype deleteq(queue* q)
qnode* temp = q->front;
elementtype item;
if (q->front == q->rear)
else
item = temp->data;
free(temp);
return item;}
void printqueue(queue* q)
printf("列印佇列資料元素:\n");
qnode* qnode = q->front;
while (qnode != null)
printf("\n");}
int main(int argc, const char * ar**)
佇列 Queue c實現
相對而言,佇列是比較簡單的。還有些warning,我改不動,要找gz幫忙。1 include 2 3 typedef struct node 4node 89 typedef struct queue 10queue 1415 void initqueue queue 16void enqueue ...
迴圈佇列的實現 Queue, C 版
queue.h ifndef queue h define queue h include extern c const int ndefaultqueuesize 50 template class queue front 0 rear 0 count 0 size initsize 析構函式 q...
佇列(c語言實現)
目錄前言 一 佇列是什麼?二 佇列的屬性與操作以及種類 1.佇列屬性 2.佇列操作 3.佇列種類 三 佇列的實現 c語言 總結 本文旨在幫助剛接觸佇列的人更快的掌握,語言不夠嚴謹,望海涵。栗子 一對情侶準備在情人節去電影院看電影,男的是個身穿格仔衫的程式設計師,我們就稱之為小木,由於排隊買票的人特別...