《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告-銀行排隊(duì)系統(tǒng)實(shí)驗(yàn)報(bào)告_第1頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告-銀行排隊(duì)系統(tǒng)實(shí)驗(yàn)報(bào)告_第2頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告-銀行排隊(duì)系統(tǒng)實(shí)驗(yàn)報(bào)告_第3頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告-銀行排隊(duì)系統(tǒng)實(shí)驗(yàn)報(bào)告_第4頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告-銀行排隊(duì)系統(tǒng)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告PAGE3/8《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告題目:銀行排隊(duì)系統(tǒng)專業(yè):數(shù)字媒體技術(shù)班級(jí):姓名:學(xué)號(hào):指導(dǎo)教師:成績(jī):

目錄1問(wèn)題描述22問(wèn)題分析33程序設(shè)計(jì)54參考文獻(xiàn)8附:源程序8問(wèn)題描述假設(shè)銀行只有一個(gè)窗口對(duì)外營(yíng)業(yè),顧客到銀行辦理業(yè)務(wù),首先要取一個(gè)順序號(hào),然后排隊(duì)等待叫號(hào)。被叫到號(hào)的顧客到柜臺(tái)接受服務(wù),服務(wù)完畢后離開(kāi)。到了下班時(shí)間不再接收新來(lái)的顧客。編寫(xiě)算法模擬銀行一天共有多少顧客接受了服務(wù),并按逆序輸出接受服務(wù)的顧客順序號(hào)。問(wèn)題分析顧客到銀行辦理業(yè)務(wù),必須按照先來(lái)先得到服務(wù)的原則,因此可以把顧客信息用一個(gè)隊(duì)列來(lái)存儲(chǔ),顧客到達(dá)后先取號(hào),然后進(jìn)人隊(duì)列(插人隊(duì)尾)等待;被叫到號(hào)的顧客接受服務(wù),然后離開(kāi)(隊(duì)頭元素出列);銀行下班后不再接收新來(lái)的顧客,即將隊(duì)列中的元素依次出隊(duì)列。到達(dá)銀行的顧客的順序號(hào)隨機(jī)產(chǎn)生(1~100之間)。設(shè)置命令:A表示顧客到達(dá)銀行;D表示顧客離開(kāi)銀行;P表示下班不再接收新顧客。為了逆序輸出已接受服務(wù)的顧客順序號(hào),可以設(shè)置一個(gè)棧,在顧客接受完服務(wù)后,將顧客的順序號(hào)存人棧中,待下班后,依次取出棧中元素并輸出,即為所求。3程序設(shè)計(jì)本題采用帶頭結(jié)點(diǎn)的鏈隊(duì)列和順序棧作為存儲(chǔ)結(jié)構(gòu)。輸入設(shè)計(jì):當(dāng)輸人命令A(yù)時(shí),進(jìn)行入隊(duì)操作。當(dāng)輸入命令D時(shí),進(jìn)行出隊(duì)操作;當(dāng)輸入命令P時(shí),如果排隊(duì)隊(duì)列不為空,則依次刪除所有元素。在刪除元素的過(guò)程中。把刪除的元素同時(shí)入棧,并計(jì)數(shù)。輸出設(shè)計(jì):輸出進(jìn)入銀行排隊(duì)的總?cè)藬?shù)和逆序輸出排隊(duì)的顧客順序號(hào)。基本操作:voidInitLinkQueue(LinkQueue*Q);初始化鏈隊(duì)列。voidInitStack(SeqStack*S);初始化順序棧。intIsLQEmpty(LinkQueue*Q):判斷鏈隊(duì)列是否為空。intIsEmpty(SeqStack。S):判斷棧是否為空。intEnLinkQueueLinkQueue*Q,int*x):在鏈隊(duì)列的隊(duì)尾插入一個(gè)元素intDeLinkQueueLinkQueue*Q,int*x):刪除鏈隊(duì)列的隊(duì)頭元素并存入x所指單元中。intPush(SeqStack*S,intx):在順序棧的棧頂插人一個(gè)元素x。intPop(SeqStack*s,imt*x):在順序棧的棧頂刪除一個(gè)元素并存入x所指單元中。voidProcesLinkQueue*Q,SeqStack*S):對(duì)到達(dá)銀行的顧客進(jìn)行處理。main()主函數(shù)。源程序#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#defineTRUE1#defineFALSE0#defineSTACK_INIT_SIZE100#defineSTACKINCERMENT10typedefstructNode{ intdata; structNode*next;}LinkQNode;typedefstruct{ LinkQNode*front; LinkQNode*rear;}LinkQueue;typedefstruct{ int*base; int*top; intStacksize;}SeqStack;voidInitLinkQueue(LinkQueue*Q){ /*將Q初始化為一個(gè)空間的鏈隊(duì)列*/ Q->front=(LinkQNode*)malloc(sizeof(LinkQNode)); Q->rear=Q->front; Q->front->next=NULL;}/*InitLinkQueue*/voidInitStack(SeqStack*S){ /*構(gòu)造一個(gè)空棧*/ S->base=(int*)malloc(STACK_INIT_SIZE*sizeof(int)); if(!S->base)printf("空間已滿\n"); else { S->top=S->base; S->Stacksize=STACK_INIT_SIZE; }/*else*/}/*InitStack*/intEnLinkQueue(LinkQueue*Q,intx){ /*將數(shù)據(jù)元素x插入到隊(duì)列Q中*/ LinkQNode*NewNode; NewNode=(LinkQNode*)malloc(sizeof(LinkQNode)); if(NewNode!=NULL) { NewNode->data=x; NewNode->next=NULL; Q->rear->next=NewNode; Q->rear=NewNode; printf("順序號(hào)為%d的顧客進(jìn)入\n",Q->rear->data); return(TRUE); }/*if*/ elsereturn(FALSE);}/*EnLinkQueue*/intDeLinkQueue(LinkQueue*Q,int*x){ LinkQNode*p; if(Q->front==Q->rear) returnFALSE; p=Q->front->next; Q->front->next=p->next; if(Q->rear==p) Q->rear=Q->front; *x=p->data; free(p); returnTRUE;}/*DeLinkQueue*/intPush(SeqStack*S,intx){ if(S->top-S->base==S->Stacksize) { S->base=(int*)realloc(S->base,(S->Stacksize+STACKINCERMENT)*sizeof(int)); if(S->base==NULL)returnFALSE; S->top=S->base+S->Stacksize; S->Stacksize=S->Stacksize+STACKINCERMENT; }/*if*/ *S->top=x; S->top++; return(TRUE);}/*PUSH*/intIsLQEmpty(LinkQueue*Q){ /*判斷隊(duì)列是否為空。如果隊(duì)列為空,返回TRUE,否則返回FALSE*/ if(Q->front==Q->rear)returnTRUE; elsereturnFALSE;}/*IsLQEmpty*/intIsEmpty(SeqStack*S){ if(S->top==S->base) returnTRUE; elsereturnFALSE;}/*IsEmpty*/intPop(SeqStack*S,int*x){ if(S->top==S->base) returnFALSE; else { S->top--; *x=*S->top; returnTRUE; }/*else*/}/*pop*/voidProcess(LinkQueue*Q,SeqStack*S){ charch,ch1,A,D,P; intflag,sum=0; intnum; printf("銀行排隊(duì)系統(tǒng)模擬\n"); printf("A--表示顧客到達(dá)D--表示顧客離開(kāi)P--表示停止顧客進(jìn)入\n"); printf("請(qǐng)輸入:AorDorP\n"); flag=1; while(flag) {scanf("%c",&ch); ch1=getchar(); switch(ch) { case'A':num=rand()%100+1; EnLinkQueue(Q,num); break; case'D':if(IsLQEmpty(Q))printf("無(wú)顧客進(jìn)入\n"); else { DeLinkQueue(Q,&num); sum=sum+1; printf("順序號(hào)為%d的顧客離開(kāi)\n",num); Push(S,num); } break; case'P':printf("停止顧客進(jìn)入\n"); printf("還在排隊(duì)的顧客有:"); while(!IsLQEmpty(Q)) { DeLinkQueue(Q,&num); printf("%d",num); sum=sum+1; Push(S,num); } flag=0; break; default:printf("無(wú)效的命令\n"); break; }/*switch*/}/*while*/printf("\n");printf("到達(dá)銀行的顧客人數(shù)為:%d\n",sum);while(!IsEmpty(S)){ Pop(S,&num); printf("第%d位顧客,順序號(hào)為:%d\n",sum,num); sum=sum-1;}/*while*/}/*precess*/main(){ LinkQueu

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論