日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

数据结构银行叫号系统

發布時間:2023/12/20 windows 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构银行叫号系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據結構銀行叫號系統

針對前輩的銀行叫號系統有bug,并不能完美實現叫號操作,晚輩提出一點修改意見,如有不對,希望指正!

先貼上前輩代碼連接

https://blog.csdn.net/sinat_40306833/article/details/78665408
小輩在學習過程中 發現前輩代碼不能實現預期目標:
******************************銀行叫號系統

問題描述:模擬銀行叫號系統,當客戶到達銀行的時候 ,取號,顯示當前客戶號,以及正在等待的客戶人數;
當有窗口 空閑的時,若有等待的客戶,則顯示信息:請XXXX號客戶到窗口辦理 。
測試數據:假設有一個窗口,前后共有6個客戶。
系統效果:1、客戶到達,取號
2、有窗口空閑,叫號
3、退出系統
實現貼士:用隊列 可以是順序的也可以是鏈式的
選用沒有頭結點的鏈式隊列
下面插入前輩源代碼

#include <iostream> using namespace std; struct Customers{ int m_iId; }; class Bank{ public: Bank(int queueCapacity); //創建隊列 bool QueueEmpty(); //判空隊列 bool QueueFull(); //判滿函數 int QueueLength(); //隊列長度 bool EnQueue(Customers customer); //新元素入隊 bool DeQueue(Customers &customer); //首元素出隊 void QueueTraverse(); //遍歷隊列 private: Customers *m_pQueue; //隊列數組指針 int m_iQueueLen; //隊列元素個數 int m_iQueueCapacity; //隊列數組容量 //int m_iHead; //隊頭 int m_iTail; //隊尾 }; Bank::Bank(int queueCapacity){ m_iQueueCapacity = queueCapacity; //隊列的總容量,賦值給隊列數組容量 m_iHead = 0; //隊頭初始化 m_iTail = 0; //隊尾初始化 m_iQueueLen = 0; //隊列元素個數初始化 m_pQueue = new Customers[m_iQueueCapacity]; //給數組申請內存,并且從堆中申請內存 } bool Bank::QueueEmpty(){ return m_iQueueLen ==0 ? true:false; } bool Bank::QueueFull(){ return m_iQueueLen == m_iQueueCapacity ? true:false; } int Bank::QueueLength(){ return m_iQueueLen; } bool Bank::EnQueue(Customers customer){ if(QueueFull()) return false; else { m_pQueue[m_iTail] = customer; m_iTail++; m_iTail = m_iTail%m_iQueueCapacity; m_iQueueLen++; return true; } } bool Bank::DeQueue(Customers &customer){ if(QueueEmpty()) return false; else{ customer = m_pQueue[m_iHead]; m_iHead++; m_iHead = m_iHead%m_iQueueCapacity; m_iQueueLen--; return true; } } void Bank::QueueTraverse(){for(int i=m_iHead;i<m_iQueueLen + m_iHead;i++){cout<<m_pQueue[i % m_iQueueCapacity].m_iId<<endl; } }demo.cpp#include <iostream> #include "bank.h" using namespace std; int main(){ Bank bank(10); Customers customer; int count = 1;cout<<"歡迎使用銀行叫號系統"<<endl; cout<<"1.有新客戶到達,取號"<<endl; cout<<"2.有窗口空閑,叫號"<<endl; cout<<"3.退出系統"<<endl; int number; while(true){ cin>>number; if(number == 1){if(bank.EnQueue(customer)){ cout<<"您的id是"<<count<<",前面還有"<<bank.QueueLength()-1<<"人在排隊!"<<endl; count++; } else{ cout<<"取號失敗!"<<endl; } } if(number == 2){ if(bank.DeQueue(customer)){ count--; cout<<"請第"<<bank.iHead<<"號客戶到窗口辦理!"<<endl; cout<<"請第"<<count<<"號客戶到窗口辦理!"<<endl; } else{ cout<<"隊列中已沒有客戶!"<<endl; } } if(number == 3) exit(0); }return 0; }

在小輩學習過程中

發現不能實現2的功能 因此對前輩代碼進行了更正,避免后人踩坑

一:

對類中的int m_iHead; //隊頭 聲明為public類型;方便以后調用

二:

在主函數中進行輸出時候,把cout<<count<<endl;改為cout<<bank.m_iHead<<endl;這樣便可以實現柜臺叫號的目的。

注:由于小輩剛剛上csdn博客,第一次發表文章,如有不對,歡迎各位前輩進行指正,感激不盡。

總結

以上是生活随笔為你收集整理的数据结构银行叫号系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。