資料結構之順序佇列

2021-08-02 23:32:33 字數 1792 閱讀 3105

本次的主題是佇列,佇列是另一種限定性的線性表(當然是人為規定的),即:它只允許在表的一端插入元素,在另一端刪除元素,故具有先進先出(fifo)的特性。

本次的**主要涉及到佇列的基本操作:

對列的初始化:initsqueueu()

入隊操作:entersequeue(sequeue*q,int x)

出隊操作:delsequeue(sequeue*q,int*x)

判空操作:empty(sequeue*q)

取隊首元素:getseq(sequeue*q,int*x)

列印佇列:print(sequeue q)

順序佇列的初始化,使用兩個指標front和rear。

typedef struct

sequeue;

為了實現基本操作,我們約定在非空佇列中,頭指標front總是指向當前佇列的第乙個元素的前乙個位置,而尾指標rear則總是指向當前佇列最後乙個元素的所在位置。因此,我們可以完成一些具體的要求:

佇列的初始化條件:q->front=q->rear=-1

隊滿條件:q->rear=max-1

對空條件:q->front=q->rear

好了,閒話少說,show the code

#include

#define max 10

typedef struct

sequeue;

sequeue initsequeue()

int getseq(sequeue*q,int*x)

}int entersequeue(sequeue*q,int

x)int empty(sequeue*q)

int delsequeue(sequeue*q,int

*x)}

void print(sequeue q)

else

printf("the sequque is empty");

}int main()

print(queue);

getseq(&queue,&z);

printf("\nnow the front:%d\n",z);

print(queue);

printf("\nyou want to out number:");

scanf("%d",&j);

printf("the had out's sequeue:");

for(i=1;i<=j;i++)

printf("\n");

print(queue);

if(empty(&queue)!=0)

printf("the queue is empty\n");

else

printf("\nthe queue is not empty\n");

return

0;}

執行截圖

總結

還是那句話,這一次的**雖然長,但是都是由一些定義的函式堆積起來的,或許未來的工程專案也會是如此這般吧。理解起來並非困難,重要的還是對於順序佇列的基本概念的熟悉,當然,還有最重要的是前面的紮實的基礎。

資料結構之佇列 順序佇列

列的特點是 先到先辦 fifo first in first out 可將佇列形象地比作管道 模擬買火車票的佇列實現 include include define n 100 最大有多少個 define datatype char 定義資料型別,定義佇列,struct queue typedef s...

資料結構 佇列之順序佇列

佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為...

資料結構之順序佇列

前面我們show了棧的技巧,那麼今天繼續學習下佇列的,佇列跟棧幾乎類似,所以在平時專案中用到的地方還是挺多的。第八個例子,順序佇列的實現 注 把我們先前實現的順序鍊錶的標頭檔案和實現檔案包含進來 標頭檔案 ifndef seqqueue h define seqqueue h typedef voi...