佇列 Queue C 語言實現

2021-10-03 21:33:28 字數 2226 閱讀 2788

佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端(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語言 總結 本文旨在幫助剛接觸佇列的人更快的掌握,語言不夠嚴謹,望海涵。栗子 一對情侶準備在情人節去電影院看電影,男的是個身穿格仔衫的程式設計師,我們就稱之為小木,由於排隊買票的人特別...