隊列實驗報告_第1頁
隊列實驗報告_第2頁
隊列實驗報告_第3頁
隊列實驗報告_第4頁
隊列實驗報告_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

一.實驗項目名稱循環(huán)隊列和鏈式隊列的創(chuàng)建二、實驗?zāi)康摹⒄莆贞犃械奶攸c(先進先出FIFO)及基本操作如入隊、出隊等,、隊列順序存儲結(jié)構(gòu)、鏈式存儲結(jié)構(gòu)和循環(huán)隊列的實現(xiàn),以便在實際問題背景下靈活應(yīng)用。三、實驗內(nèi)容.鏈式隊列的實現(xiàn)和運算.循環(huán)隊列的實現(xiàn)和運算四、主要儀器設(shè)備及耗材VC++6.0運行環(huán)境實現(xiàn)其操作五.程序算法(1)循環(huán)隊列操作的算法進隊列Voidenqueue(seqqueue&q,elemtypex){if((q.rear+1)%maxsize==q.front)cout<<”overflow”;else{q.rear=(q.rear+1)%maxsize;//編號加1或循環(huán)回第一個單元q.queue[q.rear]=x;}}出隊列Voiddlqueue(seqqueue&q){if(q.rear==q.front)cout<<”underflow”;elseq.front=(q.front+1)%maxsize;}取對頭元素elemtypegethead(seqqueueq){if(q.rear==q.front){cout<<”w”returnNULL;}elsereturnq.queue[(q.front+1)%maxsize];//front指向隊頭前一個位置}判隊列空否intempty(seqqueueq){if(q.rear==q.front)reurn1;elsereturn0;}()鏈隊列操作的算法.鏈隊列上的初始化voidINIQUEUE(linkqueue&s){link*p;p=newlink;p->next=NULL;//p是結(jié)構(gòu)體指針類型,用->s.front=p;//s是結(jié)構(gòu)體變量,用.s.rear=p;//頭尾指針都指向頭結(jié)點}2>.入隊列voidpush(linkqueue&s,elemtypex){link*p;//p是結(jié)構(gòu)體指針類型,用->p=newlink;p->data=x;p->next=s.rear->next;//s是結(jié)構(gòu)體變量,用.s.rear->next=p;s.rear=p;//插入最后}判隊空intempty(linkqueues){if(s.front==s.rear)return1;elsereturn0;}4>.取隊頭元素elemtypegethead(linkqueues){if(s.front==s.rear)returnNULL;elseretuens.front->next->data;}5>.出隊列voidpop(linkqueue&s){link*p;p=s.front->next;if(p->next==NULL)//鏈隊列中只有一個元素,需要修改rear指針{s.front->next=NULL;s.rear=s.front;}elses.front->next=p->next;//rear不用變delete(p);}六.程序源代碼a.循環(huán)隊列源代碼#include<iostream.h>#defineMAXN20structseq{charqueue[MAXN];intfront,rear;};voidiniq(seq&q){q.front=q.rear=MAXN-1;}voidenq(seq&q,charx){if((q.rear+1)%MAXN==q.front)cout<<"overflow";else{q.rear=(q.rear+1)%MAXN;q.queue[q.rear]=x;}//return(0);}voiddlq(seq&q){if(q.rear==q.front)cout<<"underflow";elseq.front=(q.front+1)%MAXN;}intgethead(seq&q)//取隊頭元素{if(q.rear==q.front)//判斷是否隊列為空cout<<"underflow";elsereturnq.queue[(q.front+1)%MAXN];}main(){seqq;inti,y;iniq(q);cout<<"輸入元素入隊0為止"<<endl;cin>>i;while(i){enq(q,i);cin>>i;}y=gethead(q);cout<<"隊頭為="<<y<<endl;dlq(q);y=gethead(q);cout<<"執(zhí)行一次刪除隊頭后,隊頭為="<<y<<endl;}b.鏈隊列的源代碼#include<iostream.h>typedefstructQNode{chardata;QNode*next;}QNode,*QueuePtr;typedefstruct{QueuePtrfront;QueuePtrrear;}LinkQueue;InitQueue(LinkQueue&Q){Q.front=Q.rear=newQNode;Q.front->next=NULL;return0;}EnQueue(LinkQueue&Q,chare){QueuePtrp;p=newQNode;p->data=e;p->next=NULL;Q.rear->next=p;Q.rear=p;return0;}voiddisp(LinkQueue&Q)//打印隊列{QueuePtrp;p=Q.front->next;while(p!=NULL){cout<<p->data<<"->";p=p->next;}}DeQueue(LinkQueue&Q,char&e){QueuePtrp;if(Q.front==Q.rear)return1;p=Q.front->next;e=p->data;Q.front->next=p->next;if(Q.rear==p)Q.rear=Q.front;deletep;return0;}voidmain(){LinkQueueQ;chare,e1;InitQueue(Q);cout<<"輸入隊列元素,0時結(jié)束:"<<endl;cin>>e;while(e!='0'){EnQueue(Q,e);cin>>e;}cout<<"隊列為:"<<endl;disp(Q);DeQueue(Q,e1);cout<<endl<<"執(zhí)行一次刪除隊頭,刪除的元素是:"<<e1<<endl;cout<<"隊列為:"<<endl;disp(Q);cout<<endl;}六程序輸入數(shù)據(jù)及實驗結(jié)果

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論