資料結構之順序佇列

2021-06-22 12:20:03 字數 1587 閱讀 8846

前面我們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...