資料結構 佇列12

2021-10-03 02:38:56 字數 2419 閱讀 4085

像棧一樣,佇列也是一種線性表。它允許在表的一端插入資料,在另一端刪除元素。插入元素的這一端稱之為隊尾。刪除元素的這一端我們稱之為隊首。佇列的結構如下圖所示。

佇列的特性:

• 在隊尾插入元素,在隊首刪除元素。

• fifo(先進先出),就向排隊取票一樣,先到先拿票

佇列的相關概念

(1)隊頭( front() )與隊尾( back() ): 允許元素插入的一端稱為隊尾,允許元素刪除的一端稱為隊頭。

(2)入隊( push_back() ):佇列的插入操作。

(3)出隊( pop_front() ):佇列的刪除操作。

陣列實現

先來看看陣列實現的方法。棧使用top變數記錄棧頂的位置,而佇列則使用front和rear分別佇列第乙個元素和最後乙個元素的位置。

#define size 20

typedef

struct queue

tyqueue;

入隊、出隊操作很簡單。入隊時,通過rear的位置判斷佇列是否已滿。如果沒有滿,則將rear後移一位,將新元素放置在rear所在位置。出隊時,也可以通過rear的位置判斷佇列是否為空。如果不空,則只需將front後移一位即可。 獲取隊頭元素,判斷佇列不空,則只需返回front指向位置的元素即可。

這樣就完成了佇列的實現嗎?你品,你細品,通過出隊操作將資料彈出佇列後,front之前的空間還能夠再次得到嗎?不能。所以使用普通陣列實現佇列,就再也不能使用front之前的空間了,這會導致大量空間丟失。

迴圈陣列

為了解決這個問題,將普通陣列換成迴圈陣列。在迴圈陣列中,末尾元素的下乙個元素不是陣列外,而是陣列的頭元素。這樣就能夠再次使用front之前的儲存空間了。

但是如果這樣排列就出現了新的問題,那就是無法判斷佇列是否滿了,你品,你細品,那我畫個圖,如下:

所以迴圈佇列中無法用頭尾指標判斷佇列是否滿了。

所以我們要加乙個計數器,具體**如下:

#include

using

namespace std;

#define size 20

typedef

struct queue

tyqueue;

void

initque

(tyqueue *m_q)

void

push_back

(tyqueue *m_q,

int a)

//沒有滿就插入尾巴

if(m_q-

>rear==size)

m_q-

>arr[

(m_q-

>rear)++]

= a;

m_q-

>counter++;}

void

popque

(tyqueue *m_q)

m_q-

>arr[m_q-

>front]=-

1;m_q-

>front++;if

(m_q-

>front >= size)

m_q-

>counter--;}

inttop

(tyqueue *m_q)

else

}void

main()

popque

(&m_que)

;popque

(&m_que)

;popque

(&m_que)

;popque

(&m_que)

;push_back

(&m_que,

2020);

int ncount = m_que.counter;

printf

("count:%d\n"

, ncount)

;int a =20;

for(

int i =

0; i < ncount; i++

)printf

("\n");

system

("pause");

}

結果:

以鍊錶的實現就比較簡單了和之前的棧實現過程類似,就不複述了。

12 資料結構

1.資料結構 有特殊關係的資料的集合 它們之間的關係。2.陣列 array 相同型別元素的有序集合。適合查詢和檢索,不適合插入和刪除。二維陣列 two dimensional arry 的儲存方式 3.記錄 record 可能是不同型別元素的集合。記錄名 記錄 物件 的名字,網域名稱 記錄中各個域 ...

資料結構 佇列

一 佇列的迴圈陣列實現。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...