c primer 佇列模擬

2021-06-05 09:19:28 字數 2646 閱讀 4692

佇列是一種抽象的資料型別(adt),可以儲存有序的專案序列.新專案被新增到隊尾,並可以刪除隊首專案。佇列有點像堆疊,不過堆疊在同一端進行新增和刪除。這使得棧是一種先進後出(lifo)的結構,而佇列是先進先出的(fifo)。從概念說說,佇列就好比是收款臺或者atm前面排的隊,所以對於上訴結構問題,佇列非常合適。因此,工程的任務之一是定義個queue類。

佇列中的專案就是顧客,heather銀行的代表介紹:通常,三分之一的顧客只需要一分鐘便可獲得服務,三分之一的顧客需要兩分鐘,另外三分之的顧客需要三分鐘。

另外,顧客到達的時間是隨機的,但每個小時使用自動櫃員機的顧客數量相當穩定。工程的另外兩個任務是:設計乙個表示顧客的類;編寫乙個程式來模擬顧客和佇列之間的互動。

1.佇列類

首先需要設計乙個queue類。這裡先列出佇列的特徵:

1)佇列儲存有序的專案序列

2)佇列所能容納的專案數有一定限制

3)應當能夠建立空佇列

4)應當能夠檢查佇列是否為空

5)應當能夠檢查佇列是否滿的

6)應當能夠在隊尾新增專案

7)應當能夠在隊首刪除專案

8)應當鞥能夠確定佇列中專案數

2.類設計

1.queue.h標頭檔案

#ifndef _queue_h_

#define _queue_h_

class customer

void set(long when);

long when() const

int ptime() const

};typedef customer item;

class queue

; enum ;

node *front;

node *rear;

const int qsize;

queue(const queue & q):qsize(0){}

queue & operator=(const queue & q)

public:

queue(int qs = q_size);

~queue();

bool isempty() const;

bool isfull() const;

int queuecount() const;

bool enqueue(const item &item);

bool dequeue(item &item);

};#endif

2.queue.cpp

#include "stdafx.h"

#include "queue.h"

#include queue::queue(int qs):qsize(qs)

queue::~queue()

}bool queue::isempty() const

bool queue::isfull() const

int queue::queuecount() const

bool queue::enqueue(const item &item)

bool queue::dequeue(item &item)

void customer::set(long when)

3.測試

// ch12_queue.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include "queue.h"

#include #include const int min_per_hr = 60;

bool newcustomer(double x);

using namespace std;

int _tmain(int argc, _tchar* argv)

} if(wait_time <= 0 && !line.isempty())

if (wait_time > 0)

wait_time--;

sum_line += line.queuecount();

} if (customers > 0)

{ cout<<"curtomers accepted: "<< customers<

AcWing 模擬佇列 佇列 模擬

時 空限制 1s 64mb 實現乙個佇列,佇列初始為空,支援四種操作 1 push x 向隊尾插入乙個數x 2 pop 從隊頭彈出乙個數 3 empty 判斷佇列是否為空 4 query 查詢隊頭元素。現在要對佇列進行m個操作,其中的每個操作3和操作4都要輸出相應的結果。第一行包含整數m,表示操作次...

用棧模擬佇列和佇列模擬棧

棧 先進後出 filo 佇列 先進先出 fifo class myqueue 兩棧模擬佇列 def init self self.input self.output 進佇列 defpush self,x 出佇列 defpop self self.peek return self.output.pop...

陣列模擬佇列

1.佇列本身是有序列表,若使用陣列的結構來儲存佇列的資料,則佇列陣列的宣告如下圖,其中 maxsize 是該隊 列的最大容量。2.因為佇列的輸出 輸入是分別從前後端來處理,因此需要兩個變數 front 及 rear 分別記錄佇列前後端的下標,front 會隨著資料輸出而改變,而 rear 則是隨著資...