資料結構簡單模擬銀行排隊系統

2021-10-07 03:07:55 字數 3757 閱讀 2997

功能要求:

(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位顧客的...