數(shù)據(jù)結(jié)構實驗4循環(huán)隊列的實現(xiàn)和運算_第1頁
數(shù)據(jù)結(jié)構實驗4循環(huán)隊列的實現(xiàn)和運算_第2頁
數(shù)據(jù)結(jié)構實驗4循環(huán)隊列的實現(xiàn)和運算_第3頁
數(shù)據(jù)結(jié)構實驗4循環(huán)隊列的實現(xiàn)和運算_第4頁
數(shù)據(jù)結(jié)構實驗4循環(huán)隊列的實現(xiàn)和運算_第5頁
免費預覽已結(jié)束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

1、1、實驗目的(1)掌握隊列“先進先出”的特點;(2)復習隊列的入隊、出對、插入、刪除等基本操作;(3)掌握循環(huán)隊列的特點,以及循環(huán)隊列的應用。2、實驗內(nèi)容(1)在順序存儲結(jié)構上實現(xiàn)輸出受限制的雙端循環(huán)隊列的入隊和出隊(只允許隊頭輸出)算法;(2)設每個元素表示一個待處理的作業(yè),元素值表示作業(yè)的預計時間。入隊列采取簡化的短作業(yè)優(yōu)先原則,若一個新提交的作業(yè)的預計執(zhí)行時間小于隊頭和隊尾作業(yè)的平均時間,則插入在對頭,否 則插入在隊尾;(3)循環(huán)隊列數(shù)據(jù)類型:#define MAXLEN 10 typedef struct int dataMAXLEN;Int front ,rear;csequeue;

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

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

4、;ntt輸入一個入隊的整數(shù)數(shù)據(jù):");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");出隊函數(shù)隊空不能出隊void Outsequeue()/ if (q.front=q.rear) printf ("ntt此隊列為空! "); return ;/else q

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

6、;int length() int k;k=(q.rear-q.front+MAXLEN)% MAXLEN;return k;void main()/主函數(shù) int i=1;int choice;IniQueue();while (i)printf("ntt循環(huán)隊列n");printf("ntt*1進隊*"printf("ntt*2出隊*"printf("ntt*3顯示*"printf("ntt*4求隊列長度*"printf("ntt*0返回*");););););print

7、f("ntt* *");printf("ntt* *");printf("nntt請選擇菜單號:");scanf("%d",&choice);switch(choice) case 1: InQueue(); break;case 2: Outsequeue(); break;case 3: ShowQueue(); break;case 4: printf("ntt隊列長度為:%d n",length();break;case 0: i=0; break;5、測試數(shù)據(jù)與實驗結(jié)果(可以抓

8、圖粘貼)(1)菜單顯示:循環(huán)隊列其進 :8 嚏夙隊示度回M N H H >4 ri M H h W Ml M H M H M H h x H M M h M M N W H >1 H m M M N W H >1 H m w M W H請選擇菜單號.(2)入隊:請選J革菜單號1輸入一個人隊的整數(shù)數(shù)據(jù):19 人隊成珈(3)隊滿(已入隊9個元素):請選擇菜單號二1輸入i個人隊的整數(shù)數(shù)據(jù):21 隊滿,不能入隊,(4)出隊:請胡圣菜單號+ 2 出隊元素為:工?(5)隊空(已出隊9個元素):請選»菜單號:2 此隊列為空,(6)顯示隊中的元素:請選擇菜單號:3此隊列元素為;11 13 14 15 16 17 18 19 20(7)求隊長:請選擇菜單號: 4 隊列長度為二96、結(jié)果分析與實驗體會本次實驗是參考了范例程序,經(jīng)過自己的改寫,從而實現(xiàn)要求。先做簡單的輸出,一步步的再 做其它格式的設置。在實驗的過程中,我加深了對隊列各種操作的理解,因為隊列是“先進先出” 的操作受限制的線性表,一般隊列只允許在隊尾進行插入操作,在隊頭進行刪除操作,元素之間存 在一對一的關系,本程序的設計過程也是對前面線性表知識的鞏固。再者,用鏈式存儲結(jié)構實現(xiàn)這 個程序,實際上是設計

溫馨提示

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

評論

0/150

提交評論