C 實現佇列資料結構(Queue)(鍊錶描述)

2021-09-27 01:27:42 字數 1881 閱讀 8220

佇列是一種先進先出(fifo)的線性表,可以使用鍊錶或陣列進行描述。乙個佇列應該具備如下功能:

1. 建立乙個佇列;

2. 檢查佇列是否非空;

3. 得到佇列的長度;

4. 得到新入隊的元素;

5. 得到準備出隊的元素;

6. 執行一次出隊操作;

7. 執行一次入隊操作;

8. 清空乙個佇列,並將其元素入隊至另外乙個佇列(下文稱「剪貼操作」);

9. 將乙個佇列中的所有元素入隊至另外乙個佇列,但該佇列元素不變動(下文稱「複製操作」);

本程式使用c++構建了這樣乙個佇列,使用xcode編譯。一共由三個檔案構成。標頭檔案,函式定義檔案以及測試檔案。本程式還使用了c++異常檢查、友元函式等方法。其中,標頭檔案如下:

//

// queuedefine.hpp

// queue

//// created by lq on 2019/9/10.

//#ifndef queuedefine_hpp

#define queuedefine_hpp

//定義鍊錶節點

struct node

;//定義佇列(queue)類

class queuedefine

;#endif /* queuedefine_hpp */

函式定義檔案如下:

//

// queuedefine.cpp

// queue

//// created by lq on 2019/9/10.

//#include "queuedefine.hpp"

#include using namespace std;

queuedefine::queuedefine()

queuedefine::~queuedefine()

int& queuedefine::back()

void queuedefine::pop()

void queuedefine::push(const int & element)

void queuedefine::show() const

node* temp = queue_out;

while(temp->last != queue_in)

cout測試檔案如下:(執行剪貼操作,不執行複製操作)

//// main.cpp

// queue

//// created by lq on 2019/9/10.

//#include #include "queuedefine.hpp"

using namespace std;

int main(int argc, const char * ar**) catch (const char *s)

catch (const char *s)

{cout執行結果如下:

1 2 3 4 5 6

2 3 4 5 6

element: 2 is operated

element: 3 is operated

element: 4 is operated

element: 5 is operated

element: 6 is operated

bye10 2 3 4 5 6

2 3 4 5 6

byebye

program ended with exit code: 0

全文完。

資料結構 佇列 queue

佇列 就是生活中的排隊,因此排隊是先到先得,也是先離開隊伍,因此佇列也是採用的先進先出的概念 fifo,慢慢想想作業系統裡面是不是也用到fifo,自己去查吧 到底有沒有 如何能夠準確的定位是先進先出呢,因此採用的就是頭指標front和尾指標rear,通常這兩個指標是封裝成乙個鏈隊 注意front與r...

資料結構 佇列 queue

佇列 queue 是一種採用先進先出 fifo 策略的抽象資料結構,它的想法來自於生活中排隊的策略。顧客在付款結賬的時候,按照到來的先後順序排隊結賬,先來的顧客先結賬,後來的顧客後結賬。同棧的實現一樣,佇列的實現也有陣列實現和鍊錶實現兩種方式。先來看看陣列實現的方法。棧使用top變數記錄棧頂的位置,...

資料結構 佇列queue

佇列 佇列是一種特殊的線性表,特殊之處在於它只允許在表的前端 front 進行刪除操作,而在表的後端 rear 進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列是有序集合,新新增的一端為隊尾,另一端為隊頭,當乙個元素從隊尾進入佇列時,一直...