




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)實驗報告-試驗三 循環(huán)隊列的基本操作及應(yīng)用一、 問題描述:熟悉并掌握循環(huán)隊列的相關(guān)操作,自己設(shè)計程序,實現(xiàn)循環(huán)隊列的構(gòu)造、清空、銷毀及隊列元素的插入和刪除等相關(guān)操作。二、 數(shù)據(jù)結(jié)構(gòu)設(shè)計: #define MAXQSIZE 10 /最大隊列長度 struct SqQueue QElemType *base; /初始化動態(tài)分配存儲空間 Int front; / 頭指針,若隊列不空,只想對列頭元素 int rear; /尾指針,若隊列不空,指向隊列尾元素的 /下一個位置 ;三、功能設(shè)計: 程序中所涉及到的函數(shù)如下: Status InitQueue(SqQueue &Q) /構(gòu)造一個
2、空隊列Q Status DestroyQueue(SqQueue &Q) /銷毀隊列Q,Q不再存在 Status ClearQueue(SqQueue &Q) /將Q清為空隊列 Status QueueEmpty(SqQueue Q) /若隊列Q為空隊列,則 /返回TRUE,否則返回FALSE int QueueLength(SqQueue Q) /返回Q的元素個數(shù),即隊列長度Status GetHead(SqQueue Q,QElemType &e)/若隊列不空,則用e返回Q的對 /頭元素,并返回OK,否則返回ERROR Status EnQueue(SqQueue
3、&Q,QElemType e)/插入元素e為Q的新的隊尾元素Status DeQueue(SqQueue &Q,QElemType &e)/若隊列不空,則刪除Q的隊頭 /元素,用e返回其值,并返回 /OK,否則返回ERRORStatus QueueTraverse(SqQueue Q,void(*vi)(QElemType)/從隊頭到隊尾依次 /對隊列Q中每個元素調(diào)用函數(shù) /vi()。一旦vi失敗,則操作失敗四、源程序:/ c1.h (程序名) #include<string.h> #include<ctype.h> #include<ma
4、lloc.h> / malloc()等 #include<limits.h> / INT_MAX等 #include<stdio.h> / EOF(=Z或F6),NULL #include<stdlib.h> / atoi() #include<io.h> / eof() #include<math.h> / floor(),ceil(),abs() #include<process.h> / exit() #include<iostream.h> / cout,cin / 函數(shù)結(jié)果狀態(tài)代碼 #defin
5、e TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 / #define OVERFLOW -2 因為在math.h中已定義OVERFLOW的值為3,故去掉此 /行 typedef int Status; / Status是函數(shù)的類型,其值是函數(shù)結(jié)果狀態(tài)代碼,如OK等 typedef int Boolean; / Boolean是布爾類型,其值是TRUE或FALSE/ c3-3.h#define MAXQSIZE 10struct SqQueueQElemType *base;int front;
6、int rear;#include"c1.h"typedef int QElemType;#include"c3-3.h"Status InitQueue(SqQueue &Q) /構(gòu)造一個空隊列QQ.base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType);if(!Q.base)/儲存分配失敗exit(OVERFLOW);Q.front=Q.rear=0;return OK;Status DestroyQueue(SqQueue &Q)/銷毀隊列Q,Q不再存在if(Q.base)free(Q
7、.base);Q.base=NULL;Q.front=Q.rear=0;return OK;Status ClearQueue(SqQueue &Q)/將Q清為空隊列Q.front=Q.rear=0;return OK;Status QueueEmpty(SqQueue Q)/若隊列Q為空隊列,則返回TREU,否則返回FALSEif(Q.front=Q.rear)/隊列空的標志return TRUE;elsereturn FALSE;int QueueLength(SqQueue Q)/Qreturn(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;Status G
8、etHead(SqQueue Q,QElemType &e)/if(Q.front=Q.rear)/隊列空return ERROR;e=*(Q.base+Q.front);return OK;Status EnQueue(SqQueue &Q,QElemType e)if(Q.rear+1)%MAXQSIZE=Q.front)/隊列滿return ERROR;Q.baseQ.rear=e;Q.rear=(Q.rear+1)%MAXQSIZE;returnOK;Status DeQueue(SqQueue &Q,QElemType &e)if(Q.front=Q.
9、rear)/隊列空return ERROR;e=Q.baseQ.front;Q.front=(Q.front+1)%MAXQSIZE;return OK;Status QueueTraverse(SqQueue Q,void(*vi)(QElemType)int i;i=Q.front;while(i!=Q.rear)vi(*(Q.base+i);i=(i+1)%MAXQSIZE;printf("n");return OK;void visit(QElemType i)cout<<"t"<<i;void main()int i=0
10、,a; QElemType d;SqQueue Q;InitQueue(Q);cout<<"初始化隊列后,隊列空否?(1:空 0:否)"<<QueueEmpty(Q)<<"n"cout<<"請輸入整型隊列元素,-1為提前結(jié)束符:n"docin>>d;if(d=-1)break;i+;EnQueue(Q,d);while(i<MAXQSIZE-1);cout<<"隊列長度為:"<<QueueLength(Q)<<&q
11、uot;n"cout<<"現(xiàn)在隊列空否?(1:空 0:否)"<<QueueEmpty(Q)<<"n"for(i=1;i<=QueueLength(Q);i+)DeQueue(d);cout<<"刪除的元素為:"<<d<<"請輸入待插入的元素:"cin>>a;EnQueue(Q,a);cout<<"現(xiàn)在隊列中的元素為:n"QueueTraverse(Q,visit); cout<<"n" GetHead(Q,a);cout<<"現(xiàn)在對頭元素為:"<<a<<"n" ClearQueue(); cout<<"清空隊列后
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 財務(wù)托管合同范本
- 書籍編印合同范本
- 二手打印機買賣合同
- 物業(yè)投票合同范本
- 魚業(yè)員工合同范本
- 酒店銷售合作合同范本
- 裝飾公司勞動合同
- 超市供貨合同范本簡單2
- 17 《古詩詞誦讀》 (教學(xué)設(shè)計)-2024-2025學(xué)年高一語文同步教學(xué)設(shè)計與知識梳理(統(tǒng)編版必修上冊)
- 第10課 遼夏金元的統(tǒng)治 教學(xué)設(shè)計-2024-2025學(xué)年高一歷史統(tǒng)編版(2019)必修中外歷史綱要上
- 臺州事業(yè)單位筆試真題2024
- 父母房產(chǎn)繼承協(xié)議書范本
- 51個行業(yè)領(lǐng)域重大事故隱患判定標準和重點檢查事項匯編
- 2024年高二化學(xué)教案 選擇性必修2(配人教版)第1課時原子結(jié)構(gòu)與性質(zhì)
- 2024-2030年中國空氣閥行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- 人工智能(人工智能大數(shù)據(jù)技術(shù)相關(guān)專業(yè))全套教學(xué)課件
- 2024年輔警招聘考試試題庫附參考答案(綜合題)
- 小學(xué)數(shù)學(xué)主題活動設(shè)計一年級《歡樂購物街》
- 一年級口算天天練1(打印版)
- 垃圾發(fā)電廠汽機培訓(xùn)
- 村情要素模板
評論
0/150
提交評論