資料結構中佇列的基本操作實現

2021-06-27 05:04:11 字數 1476 閱讀 4737

佇列是一種特殊的線性表,在這種線性表中,刪除運算限定在表的一段進行,而插入運算限定在表的另一端進行,通常,約定把允許插入的一端稱為隊尾,把允許刪除的一端稱為隊首。佇列進出的原則是先進隊的先出隊,即先進先出原則。佇列在計算機程式設計中經常被用到,如windows作業系統的訊息佇列。

接下來我們看一下佇列的資料結構,佇列可以採用鏈式或順序儲存結構來描述,這裡採用鏈式結構來進行表達。由於佇列需要在隊首以及隊尾進行刪除和插入操作,所以需要設定兩個指標來表示佇列,通常隊尾指標指向最後進入佇列的元素,為了便於表示空佇列,專門設定了乙個頭結點,當隊列為空時,頭指標和尾指標均指向頭結點,佇列的基本操作有,構建乙個空佇列、插入乙個元素、刪除乙個元素、計算佇列的長度、銷毀佇列。佇列的結構如下所示:

typedef struct lnodelnode;

typedef struct linkquelinkque;

1、構建乙個空佇列。
int queueinti(linkque& q)

q.front=head;

q.rear=head;

q.front->next=null;

retuen 1;    

}

2、插入乙個元素,插入乙個元素把該元素插入到佇列的尾部,並且修改尾部指標指向剛插入的元素。

int queueinsert(linkque& q,elementype e)

p->data=e;

q.rear->next=p;

q.rear=p;

return 1;

}

3、從鏈式佇列q中刪除乙個元素,如果佇列非空,則刪除佇列q中的隊首元素,用e返回其值。佇列中設定了頭結點,如果佇列中只有乙個元素,刪除後佇列變為空佇列,需要將隊尾指標指向頭結點。

int queuedelete(linkque& q,elementype &e)

lnode* p=q.front->next;

e=p->data;

q.front->next=p->next;

if(q.rare==p) q.rare=q.front;

free(p);

return 1;

}

4、計算佇列的長度,求佇列的長度,即計算佇列中元素的個數。

int queuelength(linkque& q)

return (i);

}

5、銷毀乙個佇列,銷毀乙個佇列實際上是從鏈式佇列的頭部開始,將所有的節點(包括頭結點)的空間都進行**。如下:
int queuedestory(linkque& q)

return 1;

}

6、總結:上述主要描述的是佇列的鏈式儲存,只要記住佇列的特性,隊首刪除,隊尾插入,就會很輕鬆的寫出佇列的基本操作,後續還會繼續介紹迴圈佇列以及一些特殊的佇列。

資料結構中佇列

佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表 佇列是一種先進後出 first in first out 1 佇列的順序儲存結構 佇列的頭尾相接的順序儲存結構成為迴圈佇列,如下圖所示 判斷佇列滿不滿 當隊列為空時,front rear 當佇列滿時,我們修改其條件,保留乙...

資料結構中佇列的鏈式儲存結構的基本操作

include include 定義 front指標指向頭結點,當front rear時,表示空佇列 typedef int qelemtype typedef struct qnodeqnode,queueptr typedef structlinkqueue 初始化 void init queu...

C語言資料結構中佇列的相關操作

include define maxsize 4 宣告佇列元素,可以任意定製 typedef int bool int menu select 宣告選擇函式 typedef struct queue 宣告結構體型別 queue void create queue queue q,int maxsiz...