佇列:是一種特殊的線性表
隊頭:取出資料元素的一端
隊尾:插入資料元素的一端
佇列性質:先進先出(fifo)
佇列的實現之順序儲存
**復用線性表的順序儲存
#include "seqlist.h"
#include "seqqueue.h"
seqqueue* seqqueue_create(int capacity) // o(1) 建立佇列,佇列是特殊的線性表
,**復用
return seqlist_create(capacity);
void seqqueue_destroy(seqqueue* queue) // o(1) 銷毀佇列
seqlist_destroy(queue);
void seqqueue_clear(seqqueue* queue) // o(1) 清空佇列
seqlist_clear(queue);
//因為佇列是從隊尾插入元素,那就使用線性表在最後乙個位置插入元素
return seqlist_insert(queue, item, seqlist_length(queue));
void* seqqueue_retrieve(seqqueue* queue) // o(n) 出佇列
//出佇列是第乙個元素,那就是返回線性表的第乙個元素
return seqlist_delete(queue, 0);
void* seqqueue_header(seqqueue* queue) // o(1) 顯示佇列第乙個元素
return seqlist_get(queue, 0);
int seqqueue_length(seqqueue* queue) // o(1)
return seqlist_length(queue);
int seqqueue_capacity(seqqueue* queue) // o(1)
return seqlist_capacity(queue);
佇列的實現之鏈式儲存
**復用線性表的鏈式儲存
#include
#include "linklist.h"
#include "linkqueue.h"
typedef struct _tag_linkqueuenode //建立乙個結構體
linklistnode header; //資料域
void* item; //指標域
} tlinkqueuenode;
linkqueue* linkqueue_create() // o(1) //建立佇列
return linklist_create();
void linkqueue_destroy(linkqueue* queue) // o(n) //銷毀佇列
//要防止記憶體洩漏,首先將佇列清空,然後再銷毀
linkqueue_clear(queue);
linklist_destroy(queue);
void linkqueue_clear(linkqueue* queue) // o(n) 佇列清空
//因為佇列是先進先出原則,所以要乙個乙個出佇列
while( linkqueue_length(queue) > 0 )
linkqueue_retrieve(queue);
tlinkqueuenode* node = (tlinkqueuenode*)malloc(sizeof(tlinkqueuenode));
int ret = (item != null) && (node != null);
if( ret )
node->item = item;
ret = linklist_insert(queue, (linklistnode*)node, linklist_length(queue));
if( !ret )
free(node);
return ret;
void* linkqueue_retrieve(linkqueue* queue) // o(1)
tlinkqueuenode* node = (tlinkqueuenode*)linklist_delete(queue, 0);
void* ret = null;
if( node != null )
ret = node->item;
free(node);
return ret;
void* linkqueue_header(linkqueue* queue) // o(1)
tlinkqueuenode* node = (tlinkqueuenode*)linklist_get(queue, 0);
void* ret = null;
if( node != null )
ret = node->item;
return ret;
int linkqueue_length(linkqueue* queue) // o(1)
return linklist_length(queue);
佇列的定義
佇列 queue 是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出 first in first out 的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭 在我們利用鍵盤進行字母數字的輸入顯示到顯示屏上其實就是利用了佇列的形式,以及當我們電腦卡死的...
佇列(queue)的定義,佇列的儲存結構
佇列定義 佇列 queue 簡稱隊,它同堆疊一樣,也是一種運算受限的線性表,其限制是僅允許在表的一端進行插入,而在表的另一端進行刪除。在佇列中把插入資料元素的一端稱為 隊尾 rear 刪除資料元素的一端稱為 隊首 front 向隊尾插入元素稱為 進隊或入隊,新元素入隊後成為新的隊尾元素 從佇列中刪除...
佇列(queue)的定義,佇列的儲存結構
佇列定義 佇列 queue 簡稱隊,它同堆疊一樣,也是一種運算受限的線性表,其限制是僅允許在表的一端進行插入,而在表的另一端進行刪除。在佇列中把插入資料元素的一端稱為 隊尾 rear 刪除資料元素的一端稱為 隊首 front 向隊尾插入元素稱為 進隊或入隊,新元素入隊後成為新的隊尾元素 從佇列中刪除...