數據結構-實驗4-循環隊列的實現和運算_第1頁
數據結構-實驗4-循環隊列的實現和運算_第2頁
數據結構-實驗4-循環隊列的實現和運算_第3頁
數據結構-實驗4-循環隊列的實現和運算_第4頁
數據結構-實驗4-循環隊列的實現和運算_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上1、 實驗目的(1) 掌握隊列“先進先出”的特點;(2) 復習隊列的入隊、出對、插入、刪除等基本操作;(3) 掌握循環隊列的特點,以及循環隊列的應用。2、 實驗內容(1) 在順序存儲結構上實現輸出受限制的雙端循環隊列的入隊和出隊(只允許隊頭輸出)算法;(2) 設每個元素表示一個待處理的作業,元素值表示作業的預計時間。入隊列采取簡化的短作業優先原則,若一個新提交的作業的預計執行時間小于隊頭和隊尾作業的平均時間,則插入在對頭,否則插入在隊尾;(3) 循環隊列數據類型:#define MAXLEN 10typedef struct int dataMAXLEN;Int fr

2、ont ,rear;csequeue;(4) 入隊作業處理的預計時間可以用隨機函數rand()產生,也可以從鍵盤輸入。3、 實驗要求(1) 用C(C+)語言完成算法設計和程序設計。(2) 上機調試通過實驗程序。(3) 輸入數據,檢驗程序運行結果。(4) 給出具體的算法分析,包括時間復雜度和空間復雜度等。(5) 撰寫實驗報告(把輸入實驗數據及運行結果用抓圖的形式粘貼到實驗報告上)。4、 實驗步驟與源程序 實驗步驟先從具體的問題中抽象出適當的數學模型,然后設計出相應的算法,其中,需要設計一個主函數來實現菜單的輸出,設計另外五個函數來求分別實現初始化隊列,入隊,出隊,顯示,求隊列長度,最后,串接函數

3、,并調試程序,在調試的時候,我先進行入隊操作,輸入9個數據之后,程序顯示隊滿,不能入隊,然后開始出隊操作,輸出9個數字之后,程序顯示隊空,再進行入隊,顯示隊中的各個元素,并求隊長,多次調試后,發現沒有問題,得出實驗結果,并截圖。 源代碼#include<stdio.h>#define MAXLEN 10typedef struct int dataMAXLEN; / 定義數據的類型 int front,rear; / 定義隊頭、隊尾指針csequeue;csequeue q; void IniQueue() / 初始化隊列 q.front=q.rear=MAXLEN-1; void

4、 InQueue() / 入隊函數 int x ; printf("ntt 輸入一個入隊的整數數據:"); scanf("%d",&x); if (q.front=(q.rear+1) % MAXLEN ) printf("ntt 隊滿,不能入隊! n"); return; q.rear=(q.rear+1) % MAXLEN; q.dataq.rear=x; printf("ntt 入隊成功! n"); void Outsequeue() / 出隊函數 if (q.front=q.rear) printf

5、 ("ntt 此隊列為空! "); return ; / 隊空不能出隊 else q.front=(q.front+1) % MAXLEN; printf("ntt 出隊元素為:%dn",q.dataq.front); / 輸出隊頭元素 return; void ShowQueue() / 顯示函數 int k=q.front; if (k=q.rear) printf("ntt 此隊列為空! n"); return; printf("ntt 此隊列元素為:"); do k=(k+1)%MAXLEN; printf

6、("%4d",q.datak); while(k!=q.rear); printf("n");int length() int k; k=(q.rear-q.front+MAXLEN)% MAXLEN; return k;void main() / 主函數 int i=1; int choice; IniQueue(); while (i) printf("ntt 循 環 隊 列n");printf("ntt*");printf("ntt* 1-進 隊 *");printf("ntt*

7、 2-出 隊 *");printf("ntt* 3-顯 示 *"); printf("ntt* 4-求 隊 列 長 度 *");printf("ntt* 0-返 回 *");printf("ntt*");printf("nntt 請選擇菜單號: ");scanf("%d",&choice);switch(choice) case 1: InQueue(); break; case 2: Outsequeue(); break; case 3: ShowQue

8、ue(); break; case 4: printf("ntt 隊列長度為: %d n",length();break; case 0: i=0; break; 5、 測試數據與實驗結果(可以抓圖粘貼)(1)菜單顯示:(2)入隊:(3)隊滿(已入隊9個元素):(4)出隊:(5)隊空(已出隊9個元素):(6)顯示隊中的元素:(7)求隊長:6、 結果分析與實驗體會本次實驗是參考了范例程序,經過自己的改寫,從而實現要求。先做簡單的輸出,一步步的再做其它格式的設置。在實驗的過程中,我加深了對隊列各種操作的理解,因為隊列是“先進先出”的操作受限制的線性表,一般隊列只允許在隊尾進行插入操作,在隊頭進行刪除操作,元素之間存在一對一的關系,本程序的設計過程也是對前面線性表知識的鞏固。再者,用鏈式存儲結構實現這個程序,實際上是設計一個帶有頭指針(front)和

溫馨提示

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

評論

0/150

提交評論