數(shù)據(jù)結(jié)構(gòu)課程設(shè)計銀行業(yè)務(wù)模擬系統(tǒng)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計銀行業(yè)務(wù)模擬系統(tǒng)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計銀行業(yè)務(wù)模擬系統(tǒng)_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計銀行業(yè)務(wù)模擬系統(tǒng)_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計銀行業(yè)務(wù)模擬系統(tǒng)_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、山東理工大學(xué)計算機學(xué)院課 程 設(shè) 計(數(shù)據(jù)結(jié)構(gòu))班 級計升1001班姓 名學(xué) 號1022051029 指導(dǎo)教師二一一年一月二十日課程設(shè)計任務(wù)書及成績評定課題名稱 銀行業(yè)務(wù)模擬系統(tǒng)、題目的目的和要求: 1、設(shè)計目的鞏固和加深對數(shù)據(jù)結(jié)構(gòu)的理解,通過上機實驗、調(diào)試程序,加深對課本知識的理解,最終使學(xué)生能夠熟練應(yīng)用數(shù)據(jù)結(jié)構(gòu)的知識寫程序。(1)通過本課程的學(xué)習(xí),能熟練掌握幾種基本數(shù)據(jù)結(jié)構(gòu)的基本操作。(2)能針對給定題目,選擇相應(yīng)的數(shù)據(jù)結(jié)構(gòu),分析并設(shè)計算法,進而給出問題的正確求解過程并編寫代碼實現(xiàn)。2、設(shè)計題目要求: 1.客戶業(yè)務(wù)分為兩種:第一種是申請從銀行得到一筆資金,即取款或借款;第二種是向銀行投入一

2、筆資金,即存款或還款。2.銀行有兩個服務(wù)窗口,相應(yīng)地有兩個隊列。客戶到達(dá)銀行后先排第一個隊。處理每個客戶業(yè)務(wù)時,如果屬于第一種,且申請額超出銀行現(xiàn)存資金總額而得不到滿足時,則立即排入第二個隊等候,直至滿足時才離開銀行, 否則業(yè)務(wù)處理完后立即離開銀行。3.每接待完一個第二種業(yè)務(wù)的客戶,則順序檢查和處理第二個隊列中的客戶,對能滿足的申請者予以滿足,不能滿足者重新排到第二個隊列的隊尾。4.假設(shè)檢查不需要時間,在此檢查過程中,一旦銀行資金總額少于或等于剛才第一個隊列中最后一個客戶(第二種業(yè)務(wù))被接待之前的數(shù)額,或者本次已將第二個隊列檢查或處理了一遍,就停止檢查(因為此時已不可能還有滿足者),轉(zhuǎn)而繼續(xù)接

3、待第一個隊列的客戶。 5.任何時刻都只開一個窗口,營業(yè)時間結(jié)束時所有客戶立即離開銀行。通過模擬方法求出客戶在銀行內(nèi)逗留的平均時間。、設(shè)計進度及完成情況日 期內(nèi) 容1.10-1.11選取參考書,查閱有關(guān)文獻資料,完成資料搜集和系統(tǒng)分析工作。1.121.14創(chuàng)建相關(guān)數(shù)據(jù)結(jié)構(gòu),錄入源程序。1.171.19調(diào)試程序并記錄調(diào)試中的問題,初步完成課程設(shè)計報告。1.201.21上交課程設(shè)計報告打印版并進行課程設(shè)計答辯,要求每個同學(xué)針對自己的設(shè)計回答指導(dǎo)教師3-4個問題??己私Y(jié)束后將課程設(shè)計報告和源程序的電子版交班長統(tǒng)一刻光盤上交。、主要參考文獻及資料1 嚴(yán)蔚敏 數(shù)據(jù)結(jié)構(gòu)(c語言版)清華大學(xué)出版社 19992

4、 嚴(yán)蔚敏 數(shù)據(jù)結(jié)構(gòu)題集(c語言版)清華大學(xué)出版社 19993 譚浩強 c語言程序設(shè)計 清華大學(xué)出版社4 與所用編程環(huán)境相配套的c語言或c+相關(guān)的資料、成績評定:設(shè)計成績: (教師填寫)指導(dǎo)老師: (簽字)二一一 年 一 月 二 十一 日目 錄第一章 概述1第二章 系統(tǒng)分析2第三章 概要設(shè)計第四章 詳細(xì)設(shè)計第五章 運行與測試第六章 總結(jié)與心得參考文獻第一章 概述課程設(shè)計是實踐性教學(xué)中的一個重要環(huán)節(jié),它以某一課程為基礎(chǔ),可以涉及和課程相關(guān)的各個方面,是一門獨立于課程之外的特殊課程。課程設(shè)計是讓同學(xué)們對所學(xué)的課程更全面的學(xué)習(xí)和應(yīng)用,理解和掌握課程的相關(guān)知識。數(shù)據(jù)結(jié)構(gòu)是一門重要的專業(yè)基礎(chǔ)課,是計算機理

5、論和應(yīng)用的核心基礎(chǔ)課程。數(shù)據(jù)結(jié)構(gòu)課程設(shè)計,要求學(xué)生在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu)的選擇和應(yīng)用、算法的設(shè)計及其實現(xiàn)等方面,加深對課程基本內(nèi)容的理解。同時,在程序設(shè)計方法以及上機操作等基本技能和科學(xué)作風(fēng)方面受到比較系統(tǒng)和嚴(yán)格的訓(xùn)練。在這次的課程設(shè)計中我選擇的題目是銀行業(yè)務(wù)模擬系統(tǒng)。一般某個銀行在某個地區(qū)營業(yè)前,都要進行市場調(diào)查與分析。通過調(diào)查,分析開多少個窗口使效率最高,而且不會產(chǎn)生較大的冗余。做此項調(diào)查通常要花費大量的人力物力,因此我借助計算機系統(tǒng)產(chǎn)生的隨機數(shù)(時間間隔,每個客戶辦理的款數(shù)以及處理時間)對銀行客戶的離散事件進行預(yù)測,通過銀行業(yè)務(wù)模擬系統(tǒng)計算出客戶在銀行逗留的總時間并計算

6、出客戶在銀行的平均逗留時間。通過計算機模擬的方法減少實際調(diào)查的勞動量,資金及時間耗費,輕松的得到高效的方法。第二章 系統(tǒng)分析1銀行業(yè)務(wù)模擬程序的主要處理對象是“事件”,事件的主要信息是事件的類型和事件的發(fā)生時刻。算法中處理的事件有兩類:一類是客戶到達(dá)事件;另一類是客戶離開事件。前一類事件發(fā)生的時刻隨客戶的到來自然形成;后一類事件發(fā)生的時刻由客戶辦理業(yè)務(wù)所需時間和等待時間而定。由于程序驅(qū)動是按事件發(fā)生時刻的先后順序進行的,所以事件表應(yīng)是有序表,其主要操作是插入和刪除事件,用一個單鏈表表示。2銀行業(yè)務(wù)模擬程序中需要的另一數(shù)據(jù)結(jié)構(gòu)是表示客戶排隊的隊列,由于假設(shè)銀行有2個窗口,因此程序中需要2個隊列,

7、隊列中有關(guān)客戶的信息是客戶到達(dá)的時間和客戶辦理業(yè)務(wù)所需要的時間。隊列中的隊頭客戶即為正在窗口辦理事務(wù)的客戶,他辦完業(yè)務(wù)離開隊列的時刻影響著即將發(fā)生的客戶離開事件的時刻,這就是說,對每個隊頭客戶都存在一個將要驅(qū)動的客戶離開事件。因此在任何時刻即將發(fā)生的事伯只有4種可能:1)新的客戶到達(dá);2)隊列1隊頭客戶辦完業(yè)務(wù)離開;3)隊列1取款客戶由于得不到滿足而轉(zhuǎn)至隊列2;4)隊列2隊頭客戶辦完業(yè)務(wù)離開; 3. 為了使編寫的程序具有通用性,在編程序時將銀行的營業(yè)時間、初始存款客戶辦理業(yè)務(wù)的最長時間及兩個客戶到達(dá)的最大時間間隔都設(shè)置成程序運行時動態(tài)輸入,但是客戶辦理業(yè)務(wù)的時間和兩個客戶到達(dá)的時間間隔用隨機函

8、數(shù)產(chǎn)生的隨機數(shù)表示。這樣可以對程序進行理性的分析,從而實現(xiàn)真正的模擬。4. 測試數(shù)據(jù)。第三章 概要設(shè)計1、 銀行業(yè)務(wù)模擬程序流程圖結(jié)束進入隊列1排隊服務(wù)并離開能否滿足客戶服務(wù)并離開進隊2等待每接待完1個用戶順序檢查隊2能否滿足取隊頭隊頭是否存在時間到?開始客戶到達(dá) 否 否 是 是 否2、 本程序包含三個模塊主程序模塊:void main() 輸出主界面;選擇操作:進入銀行業(yè)務(wù)模擬系統(tǒng)退出程序;while(進入銀行業(yè)務(wù)模擬窗口)openforday();進行初始化操作;輸出格式控制; 銀行業(yè)務(wù)模擬: while(有要處理的事件時) /有事件可處理 dequeue1(); /隊列1出隊列,并用en

9、返回值 if(客戶到達(dá)) customerarrived(); /處理客戶到達(dá)事件 else customerdeparture(); /處理客戶離開事件 計算出客戶的平均逗留時間并輸出返回主界面:選擇操作:繼續(xù)進行業(yè)務(wù)模擬退出程序;if(選擇的是退出)退出程序;客戶到達(dá)事件處理模塊實現(xiàn)客戶信息隊列的抽象數(shù)據(jù)類型客戶離開事件處理模塊實現(xiàn)有序事件鏈表的抽象數(shù)據(jù)類型3、 函數(shù)調(diào)用關(guān)系如圖所示:主函數(shù)調(diào)用客戶到達(dá)事件處理模塊調(diào)用客戶到達(dá)事件處理模塊4、 設(shè)定客戶信息隊列的抽象數(shù)據(jù)類型定義:adt linkqueue 數(shù)據(jù)對象: d=ai|aiqueueelem,i=1,2,n, n0數(shù)據(jù)關(guān)系: r1

10、=|ai-1,aiqueueelem ,i=2,3, ,n 基本操作:initqueue(&q)操作結(jié)果:構(gòu)造一個空隊列。destroyqueue(&q)初始條件:隊列已存在。操作結(jié)果:銷毀隊列,此隊列不再存在。enqueue(&q,en )初始條件:隊列已存在。操作結(jié)果:新元素en入隊列。dequeue(&q,&en)初始條件:隊列已存在。操作結(jié)果:隊頭元素出隊列,并以en返回其值。queuelength(q)初始條件:隊列已存在。操作結(jié)果:返回隊列中元素的個數(shù),即隊列長度。 adt linkqueue 第四章 詳細(xì)設(shè)計#include #include#include #include #

11、define money 5000 /個人業(yè)務(wù)值,交易額上限 #define ok 1 #define error 0 #define overflow -2 typedef int status;typedef struct int arrivetime; /到達(dá)時間 int occurtime; /事件發(fā)生時間 int ntype; /事件類型,0表示到達(dá)事件,1表示離開事件。同時用1表示存款,2表示取款。 int duration; /辦理業(yè)務(wù)時間 long int money;/交易金額event,elemtype1;typedef struct /等待隊列元素 int arrivet

12、ime; /到達(dá)時間 int duration; /辦理業(yè)務(wù)時間 long int money; /交易金額wait,elemtype2;typedef struct qnode1elemtype1 data;struct qnode1 *next;qnode1,*queue1;typedef struct qnode2elemtype2 data;struct qnode2 *next;qnode2,*queue2;typedef struct queue1 front; queue1 rear;linkqueue1;typedef struct queue2 front; queue2 r

13、ear;linkqueue2;/全局變量long int total_money; /銀行現(xiàn)存資金總額int total_time; /客戶逗留總時間int use_time;/每個顧客所用時間int money;/每個顧客辦理的款數(shù)int closetime;/銀行營業(yè)時間int intertime; /下一用戶到達(dá)的時間間隔int duration; /辦理業(yè)務(wù)所需時間int number; /辦理業(yè)務(wù)的次序int time1; /系統(tǒng)現(xiàn)在時間linkqueue1 q1;linkqueue2 q2;event en; /事件wait en1; /列表2元素/初始化隊列1status ini

14、tqueue1()q1.front=q1.rear=(queue1)malloc(sizeof(qnode1); if(!q1.front)exit(overflow); q1.front-next=null; return ok; /初始化隊列2status initqueue2()q2.front=q2.rear=(queue2)malloc(sizeof(qnode2); if(!q2.front)exit(overflow); q2.front-next=null; return ok;/銷毀隊列1status destroyqueue1()while(q1.front) q1.rea

15、r=q1.front-next; free(q1.front); q1.front=q1.rear; return ok;/銷毀隊列2status destroyqueue2()while(q2.front) q2.rear=q2.front-next; free(q2.front); q2.front=q2.rear; return ok;/隊列1入隊列status enqueue1() queue1 p,r,r1; p=(queue1)malloc(sizeof(qnode1); if(!p)exit(overflow); p-data.arrivetime=en.arrivetime;

16、p-data.occurtime=en.occurtime; p-data.ntype=en.ntype; p-data.duration=en.duration; p-data.money=en.money; r=q1.front-next; while(r)if(p-data.arrivetime data.arrivetime) if(r=q1.front-next) p-next=r; q1.front-next=p; elser1-next=p; p-next=r; r1=r;r=r-next;if(!r) if(q1.front-next=null) q1.front-next=p

17、; q1.rear=p; q1.rear-next=null; elsep-next=null; q1.rear-next=p; q1.rear=p; return ok;/隊列2入隊列status enqueue2()queue2 p; p=(queue2)malloc(sizeof(qnode2); if(!p)exit(overflow); p-data.arrivetime=en1.arrivetime; p-data.duration=en1.duration; p-data.money=en1.money; p-next=null; q2.rear-next=p; q2.rear=

18、p; return ok; /若隊列1不空,則刪除q1的隊頭元素,并用en返回其值status dequeue1() queue1 p; if(q1.front=q1.rear) return error; p=q1.front-next; en.arrivetime=p-data.arrivetime; en.occurtime=p-data.occurtime; en.ntype=p-data.ntype; en.duration=p-data.duration; en.money=p-data.money; q1.front-next=p-next; if(q1.rear=p) q1.r

19、ear=q1.front; /只有一個人時 free(p); return ok;/若隊列2不空,則刪除q2的隊頭元素,并用en1返回其值status dequeue2() queue2 p;if(q2.front=q2.rear)return error; p=q2.front-next; en1.arrivetime=p-data.arrivetime; en1.duration=p-data.duration; en1.money=p-data.money; q2.front-next=p-next; if(q2.rear=p) q2.rear=q2.front; /只有一個人時 fre

20、e(p);return ok;/營業(yè)時間結(jié)束,全部客戶離開銀行void free_system() destroyqueue1(); destroyqueue2(); /產(chǎn)生隨機數(shù)status rand_ar(int *intertime,long int *money, int *duration,int *ntype)*intertime=rand()%intertime+1; /下個客戶到達(dá)的時間間隔,不大于intertime *money=rand()%money+1; /每個顧客辦理的款數(shù),不大于money *duration=rand()%duration+1; /客戶辦理業(yè)務(wù)所要

21、時間,不大于duration *ntype=rand()%2; /事件類型分為0和1兩種 return ok;void openforday() /初始化操作printf( 請輸入銀行的初始存款:); scanf(%d,&total_money); printf( 請輸入銀行的營業(yè)時間(分鐘):); scanf(%d,&closetime); printf( 請輸入最大到達(dá)時間間隔(分鐘):); scanf(%d,&intertime); printf( 請輸入最大的處理時間(分鐘):); scanf(%d,&duration); total_time=0; /客戶逗留總時間(初始值) num

22、ber=0; /辦理業(yè)務(wù)的次序(初始值) initqueue1(); /初始化隊列1 initqueue2(); /初始化隊列2 en.arrivetime=0; /到達(dá)時間 en.occurtime=0; /事件發(fā)生時間 en.ntype=0; /事件類型,暫時值en.money=0; /交易金額,暫時值en.duration=0; /辦理業(yè)務(wù)時間,暫時值enqueue1(); /事件進隊列/查找上一離開事件的發(fā)生時間int find_leave() queue1 p; int i=0; p=q1.front-next;while(p!=null) if(p-data.ntype!=0) i

23、=p-data.occurtime; p=p-next; return i;void customerarrived()int intertime;int i;time1=en.occurtime;rand_ar(&intertime,&(en.money), &(en.duration),&(en.ntype);/設(shè)置一離開事件插入事件表en.ntype+; /0變1,1變2i=find_leave(); /查找上一離開事件的發(fā)生時間if(i=0) /第一位顧客 en.occurtime=en.arrivetime+en.duration; else if(i=en.arrivetime)/

24、本事件到達(dá)時上一事件還未離開 en.occurtime=i+en.duration; /則此事件的離開時間=上一事件的離開時間+本事件處理時間 else /上一事件離開之后,本事件才到達(dá) en.occurtime=en.arrivetime+en.duration;/則此事件的離開時間=本事件到達(dá)時間+本事件處理時間 enqueue1(); /設(shè)置下一用戶到達(dá)事件插入隊列1 en.arrivetime=en.arrivetime+intertime; /下一客戶到達(dá)時間 en.occurtime=en.arrivetime; en.ntype=0; /暫時值 en.money=0; /暫時值

25、en.duration=0; /暫時值 enqueue1();/返回隊列2的長度int getlong_q2()int i=0; queue2 p; p=q2.front-next; while(p) i+; p=p-next; return i; /順序檢查隊列2是否有滿足條件者status check_q2() int i,j,z=0; i=getlong_q2(); /用i返回隊列2長度 for(j=1;j=i;j+) dequeue2(); /隊列2出隊,用en1返回其值 if(en1.money=total_money) /若隊列2出隊元素的要交易的金額closetime) prin

26、tf(-tt%dtt%dtt%dtt%dt%dn,z,use_time,number,z,(en1.arrivetime),en1.money); else time1=time1+en1.duration; /更新系統(tǒng)當(dāng)前時間 use_time=time1-en1.arrivetime; total_time+=use_time; /更新逗留時間 total_money-=en1.money; /更新資金總額 number+; /更新實現(xiàn)交易的客戶數(shù) printf(%ldtt%dtt%dtt%dtt%dt-%dn,total_money,use_time,number,time1,(en1.

27、arrivetime),(en1.money); else /若隊列2出隊元素的要交易的金額銀行現(xiàn)存金額,不能辦理if(time1closetime) printf(-tt%dtt%dtt%dtt%dt%dn,z,use_time,number,z,(en1.arrivetime),en1.money); else enqueue2(); /繼續(xù)插入隊列2的隊尾,繼續(xù)等待 return ok;/隊列1離開事件減duration(辦理業(yè)務(wù)時間) int cut_duration(int e) /e即形參辦理業(yè)務(wù)的時間 queue1 p,q,r; elemtype1 en; p=q1.front-

28、next; r=q1.front; if(p) if(p-data.ntype!=0) q=p-next; r-next=q; /刪除結(jié)點 en.arrivetime=p-data.arrivetime; /到達(dá)時間 en.occurtime=p-data.occurtime-e; /事件發(fā)生時間 en.ntype=p-data.ntype; /事件類型 en.duration=p-data.duration; /辦理業(yè)務(wù)時間 en.money=p-data.money; /數(shù)額 free(p); enqueue1(); return ok;void customerdeparture() i

29、nt i; i=en.ntype; /業(yè)務(wù)類型,1表示存款,2表示取款 time1=en.occurtime-en.duration; if(i=ok) /是否是辦理存款 if(en.occurtimeclosetime) /營業(yè)結(jié)束,全部客戶離開銀行 free_system(); else /營業(yè)時間沒有結(jié)束,繼續(xù)辦理 use_time=en.occurtime-en.arrivetime; total_time+=use_time; /更新逗留的總時間 total_money=total_money+en.money; /更新資金總額 number+; /更新服務(wù)的客戶數(shù) time1=en

30、.occurtime; /更新系統(tǒng)當(dāng)前時間 printf(%ldtt%dtt%dtt%dtt%dt%dn,total_money,use_time,number,en.occurtime,en.arrivetime,en.money); check_q2(); /檢查隊列2是否有滿足條件者 else /辦理取款 if(en.moneytotal_money) /辦理取款,當(dāng)申請金額不能滿足時,離開隊列1進入隊列2等待 cut_duration(en.duration);/從隊列1中刪除該結(jié)點 en1.arrivetime=en.arrivetime; en1.duration=en.durat

31、ion; en1.money=en.money; enqueue2(); /進入隊列2繼續(xù)等待 else /辦理取款,當(dāng)能滿足所申請金額時進行隊列1 if(en.occurtimeclosetime)/營業(yè)結(jié)束,全部客戶離開銀行 free_system(); else use_time=en.occurtime-en.arrivetime;/顧客所用時間=事件發(fā)生時間-事件到達(dá)時間 total_time+=use_time;/更新逗留的總時間 total_money-=en.money; /更新資金總額 time1=en.occurtime; /更新系統(tǒng)當(dāng)前時間 number+; /更新客戶總

32、數(shù) printf(%ldtt%dtt%dtt%dtt%dt-%dn,total_money,use_time,number,en.occurtime,en.arrivetime,en.money); void main() cout=endl; cout 歡迎使用銀行業(yè)務(wù)模擬系統(tǒng) n; cout-endl; cout 姓名:王寧 endl; cout 學(xué)號: 1022051029 endl; cout 班級:計升1班 endl; cout=endl; cout請選擇開始或退出:endl;cout1.進入銀行業(yè)務(wù)模擬系統(tǒng)endl;cout0.退出程序n; while(n=1) openforda

33、y(); /初始化操作 cout-endl; couttotal_moneytuse_timetnumberten.occurtimeten.arrivetimetmoneyendl; while(q1.front) dequeue1(); /隊列1出隊列,并用en返回值 if(en.ntype=0)/en.ntype等于0表示客戶到達(dá),1表示客戶離開 customerarrived(); /處理客戶到達(dá)事件 else customerdeparture(); /處理客戶離開事件,業(yè)務(wù)類型en.ntype等于1表示存款,2表示取款 printf(1.營業(yè)結(jié)束后銀行現(xiàn)存資金總額(元): %ldn

34、,total_money) ; printf(2.營業(yè)時間內(nèi)實現(xiàn)交易的客戶數(shù)(人): %dn,number);printf(3.客戶在銀行逗留的總時間(分鐘): %dn,total_time); printf(4.客戶在銀行的平均逗留時間(分鐘): %fn,(float)total_time/(float)number); cout-endlendl; cout以上為模擬結(jié)果!請繼續(xù)選擇繼續(xù)或退出:endl;cout1.繼續(xù)模擬endl;cout0.退出程序n;if(n=0) cout 謝謝使用本系統(tǒng),再見!endl; break; 第五章 運行與測試1、在調(diào)試程序的過程中遇到什么問題,是如何

35、解決的?2、設(shè)計了那些測試數(shù)據(jù)?測試結(jié)果是什么?1.調(diào)試程序過程遇到的問題及解決的方法 首先是對指針初始化的問題,一些指針如果不先申請一個新變量就會報錯,即使是直接把這個指針賦值為空也要現(xiàn)為其申請一個新的空間。其次就是對循環(huán)退出條件的選擇,有幾次發(fā)現(xiàn)模擬過程出現(xiàn)了停止現(xiàn)象,此時發(fā)現(xiàn)問題就可以對循環(huán)體進行調(diào)試,一般只要對循環(huán)體內(nèi)加上一些認(rèn)為的輸出判斷它的執(zhí)行情況就可以比較方便的發(fā)現(xiàn)和解決問題。2.算法的時空分析:基于有序鏈表的時空分析:時間復(fù)雜度:由于對有序鏈表操作的主要時間在于插入操作的查找部分,而刪除操作不需查找,只是刪除第一個結(jié)點,故有:1(n)=o(n*n).(其中n為進入銀行的客戶總數(shù)

36、.)空間復(fù)雜度:因為每個客戶只能產(chǎn)生兩個事件:到達(dá)事件和離開事件,所以有序鏈表的總長度不可能超過客戶總數(shù)的兩倍,故有:1(n)=o(n). (其中n為進入銀行的客戶總數(shù).)基于用戶信息隊列的時空分析:時間復(fù)雜度:因為每個客戶都要且只要進入第一個隊列一次,而是否進入第二個隊列或是離開則是隨機的作最壞情況打算,設(shè)n1為直接離開的客戶數(shù),n2為進入第二個隊列的客戶數(shù),則當(dāng)n1n2n/2,且每次從第一隊中離開一個客戶,第二個隊列中的客戶都要進出隊列一次,則(n1*n2)|max=n*n/4 ,故有:t2(n)=o(n*n).空間復(fù)雜度:作最壞打算,假設(shè)每個客戶都要分別進入第一和第第二個隊列,則兩個隊列元素的最大個數(shù)為客戶數(shù)量的兩倍故有:s2(n)=o(n).總的時空分析:總的

溫馨提示

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

評論

0/150

提交評論