資料結構 佇列

2021-08-19 03:48:41 字數 1814 閱讀 6997

佇列的基本概念 :

佇列和棧一樣是一種特殊的線性表。

棧是一種後進先出的資料結構。比如入棧順序為1,2,3,4,5的時候,出棧順序可能為5, 4, 3, 2, 1。可能為1,24,3,5

佇列和平時的排隊打飯一樣,先進入佇列的先出去,是按照進入的順序來出佇列的,比如入佇列順序為1,2,3,4,5的時候,出佇列順序只可能為1,2,3,4,5

進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。當佇列中沒有元素的時候,稱為空佇列。

佇列儲存結構

順序佇列

使用陣列:

隊頭指標不動----要大量搬移元素 

隊頭是arr[0] 所以每次出佇列都會把arr[0] 之後的元素向前搬移。所以太耗費時間。

隊頭指標移動----存在假溢位 

迴圈佇列

迴圈佇列如何解決佇列空或者滿? 

少儲存乙個元素,在判斷的時候,判斷(tail  + 1) % size 看是否等於head,如果相等代表佇列滿了,隊列為空的時候,tail == head。

鏈式佇列---用鍊錶作為佇列的底層資料結構 :

操作:**如下:

#include #include typedef int datatype;

/***佇列中的節點

*/typedef struct node *pnode, node;

/***佇列

phead 隊頭指標

ptail 隊尾指標

size 佇列大小

*/typedef struct queue queue;

/**初始化佇列

*/void queueinit(queue* queue);

/**入隊

*/void queuepush(queue* queue, datatype data);

/**出佇列

*/int queuepop(queue* queue, datatype* data);

/**判空

*/int queueempty(queue* queue);

/**

取隊頭元素

*/datatype queuefront(queue* q);

/**取隊尾元素

*/ datatype queueback(queue* q);

/**獲取佇列中元素的個數

*/ int queuesize(queue* q);

void testqueue();

int main()

void testqueue()

void queueinit(queue* queue)

void queuepush(queue* queue, datatype data)

else

}int queuepop(queue* queue, datatype* data)

int queueempty(queue* queue)

// 取隊頭元素

datatype queuefront(queue* q)

// 取隊尾元素

datatype queueback(queue* q)

// 獲取佇列中元素的個數

int queuesize(queue* q)

return count;

}

執行結果:

資料結構 佇列

一 佇列的迴圈陣列實現。1 初始化 空佇列。令rear front 0。2 入佇列 約定rear指向佇列尾元素的下乙個位置。入佇列時,先判斷佇列是否已滿,而後將array rear x 然後rear 3 出佇列 約定front指向佇列的首元素位置。出佇列時,先判斷佇列是否為空,而後返回隊首元素re ...

資料結構 佇列

資料參考自 資料結構c 語言描述 佇列是一種先進先出的資料結構,這與棧正好相反。下例是簡單的queue實現 queue.h檔案 ifndef queue h define queue h include include 資料元素結構 自定義 struct datatype 佇列元素最大數 const...

資料結構 佇列

code for fun created by dream whui 2015 1 25 include stdafx.h include include using namespace std define true 1 define false 0 define ok 1 define erro...