本次的主題是佇列,佇列是另一種限定性的線性表(當然是人為規定的),即:它只允許在表的一端插入元素,在另一端刪除元素,故具有先進先出(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...