




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數據結構實驗報告-試驗三 循環隊列的基本操作及應用一、 問題描述:熟悉并掌握循環隊列的相關操作,自己設計程序,實現循環隊列的構造、清空、銷毀及隊列元素的插入和刪除等相關操作。二、 數據結構設計: #define MAXQSIZE 10 /最大隊列長度 struct SqQueue QElemType *base; /初始化動態分配存儲空間 Int front; / 頭指針,若隊列不空,只想對列頭元素 int rear; /尾指針,若隊列不空,指向隊列尾元素的 /下一個位置 ;三、功能設計: 程序中所涉及到的函數如下: Status InitQueue(SqQueue &Q) /構造一個
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的元素個數,即隊列長度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中每個元素調用函數 /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 / 函數結果狀態代碼 #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是函數的類型,其值是函數結果狀態代碼,如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) /構造一個空隊列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為提前結束符:n"docin>>d;if(d=-1)break;i+;EnQueue(Q,d);while(i<MAXQSIZE-1);cout<<"隊列長度為:"<<QueueLength(Q)<<&q
11、uot;n"cout<<"現在隊列空否?(1:空 0:否)"<<QueueEmpty(Q)<<"n"for(i=1;i<=QueueLength(Q);i+)DeQueue(d);cout<<"刪除的元素為:"<<d<<"請輸入待插入的元素:"cin>>a;EnQueue(Q,a);cout<<"現在隊列中的元素為:n"QueueTraverse(Q,visit); cout<<"n" GetHead(Q,a);cout<<"現在對頭元素為:"<<a<<"n" ClearQueue(); cout<<"清空隊列后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年客運資格證理論考試仿真考試
- 七年級生物期中模擬卷01【第三單元-第四單元第1章】(考試版A3)(人教版2025)
- 僅用于工作證明的非擔保聲明書(5篇)
- 住房商業性借款協議
- 農村信用社小額貸款使用及還款協議
- 班級趣味運動會事件回顧與反思周記寫作指導(14篇)
- 個人所得稅納稅及企業資金狀況證明書(6篇)
- 2025年消防安全知識培訓考試題庫-消防隊伍管理戰略規劃試題
- 農村資源開發利用綜合利用合作協議
- 參觀博物館的收獲作文(10篇)
- 輕質碳酸鈣的應用及其發展前景
- 氣污染源自動監控設施臺賬記錄模版校準記錄
- JJF 1169-2007汽車制動操縱力計校準規范
- 道路工程投資估算表模板
- 新高考高中物理競賽專題1力學50題競賽真題強化訓練原卷版
- 2023年成都市成華發展集團有限責任公司招聘筆試模擬試題及答案解析
- 曬紋資料大全
- 山東省泰安市2021-2022學年高一下學期期末考試數學試題(Word版含答案)
- ××團支部換屆選舉選票
- 復雜超限結構設計要點
- B2B2C多用戶商城平臺詳解
評論
0/150
提交評論