數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)二:棧和隊(duì)列的應(yīng)用_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)二:棧和隊(duì)列的應(yīng)用_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)二:棧和隊(duì)列的應(yīng)用_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)二:棧和隊(duì)列的應(yīng)用_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)二:棧和隊(duì)列的應(yīng)用_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡(jiǎn)介

PAGE第1頁(yè)共5頁(yè)數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)二棧和隊(duì)列的應(yīng)用實(shí)驗(yàn)?zāi)康模?.深入了解棧和隊(duì)列的特性;2.熟練掌握棧和隊(duì)列的存儲(chǔ)結(jié)構(gòu)及實(shí)現(xiàn)方式實(shí)驗(yàn)要求:1.C完成算法設(shè)計(jì)和程序設(shè)計(jì)并上機(jī)調(diào)試通過(guò)。2.撰寫(xiě)實(shí)驗(yàn)報(bào)告,提供實(shí)驗(yàn)結(jié)果和數(shù)據(jù)。3.寫(xiě)出算法設(shè)計(jì)小結(jié)和心得。實(shí)驗(yàn)內(nèi)容:1.用棧實(shí)現(xiàn):識(shí)別依次讀入的一個(gè)以@為結(jié)束符的字符序列是否為形如‘序列1&序列2’模式的字符序列。其中序列1和序列2中都不含字符‘&’,且序列2是序列1的逆序列。例如,‘a(chǎn)+b&b+a’是屬該模式的字符序列,而‘1+3&3-12.假設(shè)以帶頭結(jié)點(diǎn)的循環(huán)鏈表表示隊(duì)列,并且只設(shè)一個(gè)指針指向隊(duì)尾元素結(jié)點(diǎn)(注意不設(shè)頭指針),試編寫(xiě)相應(yīng)的隊(duì)列初始化、入隊(duì)列和出隊(duì)列等操作。程序源代碼:1、#include"stdio.h"#include"stdlib.h"#include"string.h"#defineEMPTY0#defineFULL10000#defineMAX10000typedefchardata;typedefstructelem{datad;structelem*next;}elem;typedefstructstack{intcnt;elem*top;}stack;voidinitialize(stack*stk);voidpush(datad,stack*stk);datapop(stack*stk);boolempty(conststack*stk);boolfull(conststack*stk);//棧操作函數(shù)voidinitialize(stack*stk){stk->cnt=0;stk->top=NULL;}boolempty(conststack*stk){returnstk->cnt==EMPTY;}boolfull(conststack*stk){returnstk->cnt==FULL;}voidpush(datad,stack*stk){elem*p;if(!full(stk)){p=(elem*)malloc(sizeof(elem));p->d=d;p->next=stk->top;stk->top=p;stk->cnt++;}}datapop(stack*stk){datad;elem*p;if(!empty(stk)){d=stk->top->d;p=stk->top;stk->top=stk->top->next;stk->cnt--;free(p);}returnd;}intmain(void){datainput[MAX];stacktemp;inti=0;intflag=0;initialize(&temp);//初始化臨時(shí)棧printf("輸入字符串:\n");scanf("%s",&input);//輸入字符串while(input[i]!='@')//字符串入棧{push(input[i],&temp);i++;}while(!empty(&temp))//字符依次出棧和字符數(shù)組比較,判斷是否符合“序列1&序列2@”形式{if(temp.top->d==input[flag]){pop(&temp);flag++;}else{printf("此字符序列不符合“序列1@序列2@”形式\n");break;}}if(empty(&temp))printf("此字符序列符合“序列1@序列2@”形式\n");return1;}2、#include"iostream.h"typedefintElmeType;structNode{ ElmeTypedate; Node*next;};typedefNodeQueue;voidInitQueue(Queue*&rear)//InitQueue對(duì)隊(duì)列進(jìn)行初始化{ rear->date=-1; rear->next=rear;}voidInQueue(Queue*&rear,ElmeTypee)//入列{ Queue*p=newQueue; p->date=e; if(rear->next==rear) { p->next=rear; rear->next=p; rear=p; } else { p->next=rear->next->next; rear->next->next=p; } cout<<"插入"<<e<<endl;}ElmeTypeOutqueue(Queue*&rear)//出列{ if(rear->next==rear) { cout<<"隊(duì)列空"<<endl; returnNULL; } Queue*p=rear; while(p->next!=rear) p=p->next; ElmeTypee=rear->date; p->next=rear->next; deleterear; rear=p; returne;}voidshow(Queue*rear)//隊(duì)列的輸出{ Queue*p=rear->next; p=p->next; while(p->date!=-1) { cout<<p->date<<""; p=p->next; } cout<<endl;}voidmain(){ Queues; Queue*rear=&s; InitQueue(rear); show(rear); InQueue(rear,12); InQueue(rear,96); InQueue(rear,23); InQueue(rear,56); InQueue(rear,6); InQueue(rear,8); show(rear); ElmeTypee; e=Outqueue(rear); cout<<"出隊(duì)隊(duì)尾元素:"<<endl<<e<<endl; e=Outqueue(rear); cout<<e<<endl; e=Outqueue(rear); cout<<e<<endl; e=Outqueue(rear); cout<<e<<endl; show(rear);}測(cè)試結(jié)果1、2、六、小結(jié)(包括收獲、心得體會(huì)、

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論