5 18 銀行業務佇列簡單模擬 25分

2022-03-06 04:14:36 字數 1898 閱讀 4938

5-18 銀行業務佇列簡單模擬   (25分)

設某銀行有a、b兩個業務視窗,且處理業務的速度不一樣,其中a視窗處理速度是b視窗的2倍 —— 即當a視窗每處理完2個顧客時,b視窗處理完1個顧客。給定到達銀行的顧客序列,請按業務完成的順序輸出顧客序列。假定不考慮顧客先後到達的時間間隔,並且當不同視窗同時處理完2個顧客時,a視窗顧客優先輸出。

輸入為一行正整數,其中第1個數字n(\le≤1000)為顧客總數,後面跟著n位顧客的編號。編號為奇數的顧客需要到a視窗辦理業務,為偶數的顧客則去b視窗。數字間以空格分隔。

按業務處理完成的順序輸出顧客的編號。數字間以空格分隔,但最後乙個編號後不能有多餘的空格。

8 2 1 3 9 4 11 13 15
1 3 2 9 11 4 13 15

一、原理queue 佇列也是乙個線性儲存表,元素資料的插入在表的一端進行,在另一端刪除,從而構成了乙個先進先出fifo(first in first out)表。插入一端稱為隊尾,刪除一端稱為隊首。
預設使用雙端佇列deque來實現,queue也可看成乙個容器介面卡,將 deque 容器轉換為 queue 容器。當然,也可以利用其他合適的序列容器作

為底層實現queue容器。

c++ stl對queue佇列的泛化,是通過模板型別,將預設的deque雙端佇列型別匯入,在內部建立乙個序列容器物件,來處理 queue佇列的資料儲存和操作,包括queue佇列是否為空、取隊首元素、取隊尾元素、元素入隊和元素出隊等。由於僅需要取隊首和隊尾元素的操作,因此queue佇列容器並不提供任何型別的迭代器。

二、應用

1、建立

(1)queue() 預設的建構函式,建立乙個空的 queue 物件。

queueq;//使用預設的雙端隊列為底層容器建立了乙個空的queue佇列物件q,資料元素為int型別

(2)queue(const queue&) 複製建構函式,用乙個queue物件建立新的queue物件。

//queue> q1;

queue> q2(q1);//以雙向鍊錶為底層容器的queue物件

2、入隊和出隊

void push(const value_type& x) //插入佇列

void pop()//出隊,從佇列中刪除

3、取隊首尾元素

queue佇列容器的front函式和back函式,可分別讀取隊首和隊尾元素。

(1)value_type& front() 讀取佇列的隊首元素。

(2)value_type& back() 讀取佇列的隊尾元素。

4、其它

(1)bool empty() //判斷空

(2)size_type size() //佇列大小

**:(第一次試著用stl容器寫,哈哈。。。。)

1 #include "

stdio.h

"2 #include "

queue

"3 #include "

iostream"4

using

namespace

std;

5int

main()

15else18}

19int flag = 0

;//主要是為了讓開頭的輸出沒有空格

20if(!a.empty())

25else

29while (!b.empty() || !a.empty()) 36}

37else

42if(!b.empty())46}

47}48 printf("\n"

);49

return0;

50 }

5 18 銀行業務佇列簡單模擬 25分

5 18 銀行業務佇列簡單模擬 25分 設某銀行有a b兩個業務視窗,且處理業務的速度不一樣,其中a視窗處理速度是b視窗的2倍 即當a視窗每處理完2個顧客時,b視窗處理完1個顧客。給定到達銀行的顧客序列,請按業務完成的順序輸出顧客序列。假定不考慮顧客先後到達的時間間隔,並且當不同視窗同時處理完2個顧...

銀行業務佇列簡單模擬

設某銀行有a b兩個業務視窗,且處理業務的速度不一樣,其中a視窗處理速度是b視窗的2倍 即當a視窗每處理完2個顧客時,b視窗處理完1個顧客。給定到達銀行的顧客序列,請按業務完成的順序輸出顧客序列。假定不考慮顧客先後到達的時間間隔,並且當不同視窗同時處理完2個顧客時,a視窗顧客優先輸出。輸入為一行正整...

銀行業務佇列簡單模擬

設某銀行有a b兩個業務視窗,且處理業務的速度不一樣,其中a視窗處理速度是b視窗的2倍 即當a視窗每處理完2個顧客時,b視窗處理完1個顧客。給定到達銀行的顧客序列,請按業務完成的順序輸出顧客序列。假定不考慮顧客先後到達的時間間隔,並且當不同視窗同時處理完2個顧客時,a視窗顧客優先輸出。輸入格式 輸入...