佇列 Queue 的定義及實現

2021-07-26 23:57:16 字數 2707 閱讀 8429

佇列是一種特殊的線性表

佇列不允許在中間部位進行操作!

佇列的性質:先進先出

佇列的一些常用操作:

建立佇列,銷毀佇列,清空佇列,進佇列,出佇列,獲取隊頭元素,獲取佇列的長度

佇列的順序儲存實現是基於線形表的**實現的,因此需要呼叫線形表的標頭檔案,線性表的**在前面的文章中已經詳細說明,此處不再贅述。

//順序佇列 標頭檔案 seqqueue.h

#ifndef _seqqueue_h_

#define _seqqueue_h_

typedef

void seqqueue;

seqqueue* seqqueue_create(int capacity);

void seqqueue_destroy(seqqueue* queue);

void seqqueue_clear(seqqueue* queue);

void* seqqueue_retrieve(seqqueue* queue);//出佇列

void* seqqueue_header(seqqueue* queue);//獲取頭部

int seqqueue_length(seqqueue* queue);

int seqqueue_capacity(seqqueue* queue);

#endif

//順序佇列 原始檔 seqqueue.c

#include "seqlist.h"

#include "seqqueue.h"

seqqueue* seqqueue_create(int capacity) // o(1)

void seqqueue_destroy(seqqueue* queue) // o(1)

void seqqueue_clear(seqqueue* queue) // o(1)

void* seqqueue_retrieve(seqqueue* queue) // o(n) 出佇列

void* seqqueue_header(seqqueue* queue) // o(1) 獲取頭部元素

int seqqueue_length(seqqueue* queue) // o(1)

int seqqueue_capacity(seqqueue* queue) // o(1)

同樣,鏈式儲存也要借助於鍊錶的**。

//鏈式佇列 標頭檔案 linklist.h

#ifndef _linkqueue_h_

#define _linkqueue_h_

typedef

void linkqueue;

linkqueue* linkqueue_create();

void linkqueue_destroy(linkqueue* queue);

void linkqueue_clear(linkqueue* queue);

void* linkqueue_retrieve(linkqueue* queue);

void* linkqueue_header(linkqueue* queue);

int linkqueue_length(linkqueue* queue);

#endif

//鏈式佇列 原始檔 linklist.c

#include

#include

#include

"linklist.h"

#include

"linkqueue.h"

typedef struct _tag_linkqueuenode

tlinkqueuenode;

linkqueue* linkqueue_create() // o(1)

void linkqueue_destroy(linkqueue*

queue) // o(n)

void linkqueue_clear(linkqueue*

queue) // o(n)

}queue, void

* item) // o(n) 資料加入佇列

if( !ret )

return ret;

}void

* linkqueue_retrieve(linkqueue*

queue) // o(1) 出佇列

return ret;

}void

* linkqueue_header(linkqueue*

queue) // o(1) 獲取頭部元素

return ret;

}int linkqueue_length(linkqueue*

queue) // o(1)

佇列通常有兩種實現方式:

佇列(queue)原理及實現

目錄 序言 佇列簡介 一 順序儲存結構及實現 二 迴圈佇列 三 鏈式儲存結構及實現 四 雙向佇列 佇列是一種特殊的線性表,它只允許在表的前端 front 進行刪除操作,只允許在表的後端 rear 進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。根據其特徵,把佇列簡稱為先進先出 fi...

實現佇列 Queue

佇列 只允許在一端進行插入資料操作,在另一端進行刪除資料操作的特殊線性表,佇列具有先進先出fifo first in first out 入佇列 進行插入操作的一端稱為隊尾 出佇列 進行刪除操作的一端稱為隊頭 實現 是用鍊錶的結構實現更優一些,因為如果使用陣列的結構,出佇列在陣列頭上出資料,效率比較...

佇列Queue的實現

佇列 先進先出 兩種實現方式 1.利用陣列 2.鏈式儲存 需要兩個變數指向隊頭front和隊尾rear,當入隊時,隊尾後移 出隊時,隊頭後移 使用陣列實現,當我們入隊至陣列滿,然後出隊至陣列空,此時雖然陣列為空,但是卻不能再入隊了,因為隊尾rear已經指向了陣列的最後乙個索引位置。那麼如何充分利用陣...