佇列
佇列是一種常用的資料結構,最基本的特點是先進先出。
1、什麼是佇列?
佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。
佇列的資料元素又稱為佇列元素。在佇列中插入乙個佇列元素稱為入隊,從佇列中刪除乙個佇列元素稱為出隊。因為佇列只允許在一端插入,在另一端刪除,所以只有最早進入佇列的元素才能最先從佇列中刪除,故佇列又稱為先進先出(fifo—first in first out)線性表。
2、佇列的作用(為什麼要使用佇列)
只要需要先進先出邏輯的地方就可以使用佇列來儲存資料,比如在實現數字濾波的時候可以使用佇列來儲存待處理的資料。
3、佇列的分類與特點
大致有普通佇列、迴圈佇列、雙端佇列,這個分類並沒有太大的意義。
4、基於鍊錶的佇列實現
4.1 佇列的結構
鍊錶的結構體含有兩個指標,乙個指向隊頭節點,乙個指向隊尾節點。節點的結構體包含乙個資料和乙個指標,指標指向下乙個節點。
4.2 佇列的基本操作
1、初始化
2、判斷隊列為空
3、進佇列
4、出佇列
5、檢視隊首元素
6、獲取佇列的大小
7、銷毀佇列
4.3 基於單向線性鍊錶的佇列的c語言實現
標頭檔案
#ifndef ql_h
#define ql_h
//#include#includetypedef struct queuenode queue_node;
typedef struct queue queue;
/*init to a empty queue*/
void queue_init(queue* queue);
/*free ram and recover to init*/
void queue_deinit(queue* queue);
/*is empty?*/
bool queue_empty(queue* queue);
/*push*/
void queue_push(queue* queue,int data);
/*pop*/
int queue_pop(queue* queue);
/*jusu see a see*/
int queue_front(queue* queue);
/*how many members*/
int queue_size(queue* queue);
#endif/*ql_h*/
c檔案
#include "ql.h"
#include static queue_node* create_node(int data)
static queue_node* destroy_node(queue_node* node)
/*init to a empty queue*/
void queue_init(queue* queue)
/*free ram and recover to init*/
void queue_deinit(queue* queue)
/*is empty?*/
bool queue_empty(queue* queue)
/*push*/
void queue_push(queue* queue,int data)
/*pop*/
int queue_pop(queue* queue)
/*jusu see a see*/
int queue_front(queue* queue)
/*how many members*/
int queue_size(queue* queue)
測試檔案
#include #include "ql.h"
/*進隊測試*/
void queue_push_test(queue* queue)
/*出隊測試*/
void queue_pop_test(queue* queue) {
int i;
int size = queue_size(queue);
for(i=0;i
資料結構之佇列
八 佇列 鏈式佇列 鍊錶實現 隊尾 rear 隊首 front 靜態佇列 陣列實現 必須是迴圈佇列 需要幾個引數來確定,各引數含義 1 佇列初始化 front和rear值都是0 2 佇列非空 front代表佇列第乙個元素 rear代表佇列最後乙個元素的 下乙個元素 3 佇列空 front和rear相...
資料結構之佇列
與棧相反,佇列是一種先進先出的線性表,它只允許在表的一端進行,而在另一端刪除元 素。在佇列中,允許插入的一端叫做隊尾,允許刪除的一端則稱為隊頭。1 鏈佇列 佇列的鏈式表示和實現 用鍊錶表示的佇列簡稱為鏈佇列,乙個鏈佇列顯然需要兩個分別指示對頭和隊尾的指標 分別稱為頭指 針和尾指標 才能唯一確定。這裡...
資料結構之佇列
一 佇列的介紹 佇列 queue 是一種線性儲存結構。它有以下幾個特點 1 佇列中資料是按照 先進先出 fifo,first in first out 方式進出佇列的。2 佇列只允許在 隊首 進行刪除操作,而在 隊尾 進行插入操作。佇列通常包括的兩種操作 入佇列 和 出佇列。1.佇列的示意圖 佇列中...