前面我們show了棧的技巧,那麼今天繼續學習下佇列的,佇列跟棧幾乎類似,
所以在平時專案中用到的地方還是挺多的。
第八個例子,順序佇列的實現:
注:把我們先前實現的順序鍊錶的標頭檔案和實現檔案包含進來
標頭檔案
#ifndef _seqqueue_h_
#define _seqqueue_h_
typedef void seqqueue;
seqqueue* seqqueue_create(int capacity);
void seqqueue_destroy(seqqueue* queue);
void seqqueue_clear(seqqueue* queue);
int seqqueue_length(seqqueue* queue);
int seqqueue_capacity(seqqueue* queue);
void* seqqueue_retrieve(seqqueue* queue);
void* seqqueue_header(seqqueue* queue);
#endif
實現檔案
#include "seqlist.h"
#include "seqqueue.h"
seqqueue* seqqueue_create(int capacity)
void seqqueue_destroy(seqqueue* queue)
void seqqueue_clear(seqqueue* queue)
int seqqueue_length(seqqueue* queue)
int seqqueue_capacity(seqqueue* queue)
void* seqqueue_retrieve(seqqueue* queue)
void* seqqueue_header(seqqueue* queue)
熟悉嗎?是不是跟棧的實現類似呢?
測試檔案
#include #include #include "seqqueue.h"
int main(int argc, char *argv)
; int i = 0;
for (i = 0; i < 10; i++)
printf("capacity:%d\n", seqqueue_capacity(queue));
printf("length:%d\n", seqqueue_length(queue));
printf("header:%d\n", *((int*)seqqueue_header(queue)));
while (seqqueue_length(queue) > 0)
seqqueue_clear(queue);
seqqueue_destroy(queue);
system("pause");
return 0;
}
好了,測試完畢,是不是覺得莪狠簡單呢?但是問題來了,我們分析實現的**中,
哈哈,先賣個關子,下一版本揭曉!
資料結構之佇列 順序佇列
列的特點是 先到先辦 fifo first in first out 可將佇列形象地比作管道 模擬買火車票的佇列實現 include include define n 100 最大有多少個 define datatype char 定義資料型別,定義佇列,struct queue typedef s...
資料結構 佇列之順序佇列
佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為...
資料結構之順序佇列
本次的主題是佇列,佇列是另一種限定性的線性表 當然是人為規定的 即 它只允許在表的一端插入元素,在另一端刪除元素,故具有先進先出 fifo 的特性。本次的 主要涉及到佇列的基本操作 對列的初始化 initsqueueu 入隊操作 entersequeue sequeue q,int x 出隊操作 d...