佇列是一種特殊的線性表。
佇列不允許在中間部位進行操作!
佇列的性質:先進先出
佇列的一些常用操作:
建立佇列,銷毀佇列,清空佇列,進佇列,出佇列,獲取隊頭元素,獲取佇列的長度
佇列的順序儲存實現是基於線形表的**實現的,因此需要呼叫線形表的標頭檔案,線性表的**在前面的文章中已經詳細說明,此處不再贅述。
//順序佇列 標頭檔案 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已經指向了陣列的最後乙個索引位置。那麼如何充分利用陣...