功能要求:
(1) 客戶進入排隊系統;
(2) 客戶離開;
(3) 查詢當前客戶前面還有幾人;
(4) 查詢截至目前總共辦理多少客戶。
輸出要求:每進行一次操作後,輸出當前排隊成員情況。
演算法實現
首先建立乙個空佇列即銀行排隊佇列,再向其中執行插入,刪除,查詢等操作。在執行插入操作時要判斷佇列是否已達最大長度,否則不能插入。在刪除時要判斷佇列是否為空,否則不能執行刪除操作。刪除以後若隊列為空,則需要將隊尾指向對頭。
#include
#include
#include
#define ok 1
#define error 0
#define true 1
#define false 0
//define the structure node
int m =0;
typedef
int status;
typedef
int qelemtype;
typedef
struct queue//結點結構
queue,
*queueptr;
typedef
struct linkqueue
linkqueue;
#define queue_len sizeof(queue)
intinitqueue
(linkqueue*);
//建立乙個佇列
intemptyqueue
(linkqueue*);
//判斷佇列是否為控
intenterqueue
(linkqueue*
,int value)
;//插入元素value為q的新的隊尾元素
intdequeue
(linkqueue*);
//刪除元素
intprintqueue
(linkqueue*);
//輸出佇列
intquery
(linkqueue*
,int);
//查詢元素mynum在佇列中的位置
#include
#include
intinitqueue
(linkqueue* q)
//構造乙個空佇列q
q->front->next =
null
;return ok;
}int
enterqueue
(linkqueue* q,
int entervalue)
//插入元素entervalue為q的新的隊尾元素
tmpnode->value = entervalue;
tmpnode->next =
null
; q->tail->next = tmpnode;
q->tail = tmpnode;
}int
emptyqueue
(linkqueue *q)
//若佇列q為空,返回true,否則返回false
intprintqueue
(linkqueue* q)
//將佇列中每個元素輸出
while
(tmpnode != q->tail)
printf
("%d\n"
, q->tail->value);}
intdequeue
(linkqueue*q, qelemtype *e)
//若佇列不空,刪除q的隊頭元素,用e返回其值,並返回ok,否則返回error
p = q->front->next;
*e = p->value;
q->front->next = p->next;
m++;if
(q->tail == p)
//如果佇列中只有乙個元素
q->tail = q->front;
//此時應當讓隊尾指標指向隊頭,否則可能將隊尾指標釋放掉
free
(p);
return ok;
}int
query
(linkqueue* q,
int mynum)
//查詢元素mynum在佇列中的位置
else
if(mynum==q->front->value==q->tail->value)
else
if(mynum > q->tail->value || mynum < q->front->value)
else
}#include
#include
static
int banknumber =0;
static
int totalnumber =0;
intstopbank()
;int
startbank()
;int flag =1;
intmain()
else
case2:
dequeue
(&q,
&d);
printf
("您(%d號)已離開銀行 ....\n"
, d)
; totalnumber--
;printf
("當前的排隊成員情況為:");
printqueue
(&q)
;break
;case3:
printf
("請輸入您的號碼:\n");
scanf_s
("%d"
,&num)
;printf
("%d 人在您之前,請稍等\n"
,query
(&q, num));
printf
("當前的排隊成員情況為:");
printqueue
(&q)
;break
;case4:
printf
("截止目前總共辦理%d個客戶\n"
, m)
;printf
("當前的排隊成員情況為:");
printqueue
(&q)
;break
;case5:
exit(0
);break
;default
:break;}
}return ok;
}int
stopbank()
intstartbank()
執行結果
1、客戶進入排隊系統
2、客戶離開銀行
3、查詢當前客戶前面還有幾人
4、查詢截止目前總共辦理多少客戶
資料結構試驗 銀行業務佇列簡單模擬
設某銀行有 兩個業務視窗,且處理業務的速度不一樣,其中 視窗處理速度是 視窗的 倍 即當 視窗每處理完 個顧客時,視窗處理完 個顧客。給定到達銀行的顧客序列,請按業務完成的順序輸出顧客序列。假定不考慮顧客先後到達的時間間隔,並且當不同視窗同時處理完 個顧客時,視窗顧客優先輸出。include inc...
銀行業務佇列簡單模擬 資料結構題目
設某銀行有a b兩個業務視窗,且處理業務的速度不一樣,其中a視窗處理速度是b視窗的2倍 即當a視窗每處理完2個顧客時,b視窗處理完1個顧客。給定到達銀行的顧客序列,請按業務完成的順序輸出顧客序列。假定不考慮顧客先後到達的時間間隔,並且當不同視窗同時處理完2個顧客時,a視窗顧客優先輸出。輸入為一行正整...
資料結構 銀行排隊問題之單視窗「夾塞」版
題目大意 排隊 夾塞 是引起大家強烈不滿的行為,但是這種現象時常存在。在銀行的單視窗排隊問題中,假設銀行只有1個視窗提供服務,所有顧客按到達時間排成一條長龍。當視窗空閒時,下一位顧客即去該視窗處理事務。此時如果已知第i位顧客與排在後面的第j位顧客是好朋友,並且願意替朋友辦理事務的話,那麼第i位顧客的...