資料結構之佇列

2021-09-05 11:16:28 字數 2555 閱讀 5988

佇列

佇列是一種常用的資料結構,最基本的特點是先進先出。

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.佇列的示意圖 佇列中...