資源描述:
《王康乾王康乾.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、1、實驗題目棧和隊列2、實驗?zāi)康暮鸵髮嶒災(zāi)康模?)熟練掌握棧的邏輯結(jié)構(gòu)和操作規(guī)則,能在相應(yīng)的實際問題中正確選用該結(jié)構(gòu)。(2)熟練掌握棧的2種存儲結(jié)構(gòu)實現(xiàn)方法(順序棧和鏈棧),兩種存儲結(jié)構(gòu)和基本運算的實現(xiàn)算法,注意??蘸袧M的判斷條件及它們的描述方法。(3)熟練掌握隊列的邏輯結(jié)構(gòu)和操作規(guī)范,能在相應(yīng)的實際問題中正確選用該結(jié)構(gòu)。(4)掌握循環(huán)隊列與鏈隊列兩種存儲結(jié)構(gòu)的實現(xiàn),熟練掌握各種隊列基本運算的實現(xiàn)。實驗要求(1)順序棧的插入、刪除,棧頂數(shù)據(jù)元素的讀取。(2)鏈棧的插入、刪除,棧頂數(shù)據(jù)元素的讀取。(3)循環(huán)隊列的插入、刪除。(4)鏈隊列
2、的插入、刪除。3、實驗內(nèi)容(1)抽象數(shù)據(jù)類型定義在棧的實驗中可實現(xiàn),入棧、出棧、顯示棧頂元素、顯示棧中元素、顯示棧的長度等功能;在循環(huán)隊列中可實現(xiàn)建立循環(huán)隊列,入隊和出隊運算;(2)存儲結(jié)構(gòu)定義及算法思想①存儲結(jié)構(gòu)typedefstruct//棧的順序存儲表示{SElemType*base;//在棧構(gòu)造之前和銷毀之后,base的值為NULLSElemType*top;//棧頂指針intstacksize;//當(dāng)前已分配的存儲空間,以元素為單位}SqStack;棧含有兩個指針,一個底部指針base,另外一個是首部指針top。通過這兩個指針
3、可實現(xiàn)入棧,出棧的操作;intPop(SqStack&S,int&e)//出棧{//若棧不空,則刪除S的棧頂元素,用e返回其值,并返回1;否則返回0if(S.top==S.base)return0;e=*(--S.top);return1;}出棧運算中,首先要確定有元素可以出,若棧為空則返回0,否則用e將棧頂元素返回;typedefstruct{QElemType*base;intfront;intrear;}SqQueue;循環(huán)隊列采用結(jié)構(gòu)體來定義,其中兩個元素rear、front分別是隊尾和隊首元素。②典型函數(shù)分析入棧:intPus
4、h(SqStack&S,inte)//入棧插入元素e為新的棧頂元素{if(S.top-S.base>=S.stacksize)//棧滿,追加存儲空間{S.base=(int*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int));if(!S.base)exit(0);//存儲分配失敗S.top=S.base+STACKINCREMENT;}*(S.top++)=e;return1;}入棧之前必須檢查棧中是否還有存儲空間,若沒有存儲空間則要繼續(xù)開辟新的存儲空間,再入棧;若存儲空間
5、是夠的,則只需將給top指針附一個值,再將top指針加一個,這樣就可以完成入棧操作了入隊:StatusEnQueue(SqQueue&s,QElemTypee){if((s.rear+1)%MAXQSIZE==s.front)returnERROR;s.base[s.rear]=e;s.rear=(s.rear+1)%MAXQSIZE;returnOK;returnOK;}在入隊操作中,首先也要判斷隊是否已滿,如果滿了將不能繼續(xù)入隊,則要返回error。若隊未滿則可以繼續(xù)入隊,在入隊時直接給s.base[s.rear]賦值e,rear是
6、隊尾,這樣滿足隊列的基本特性;主函數(shù)(棧)主函數(shù)依然在一個while循環(huán)中,在這個循環(huán)中不斷地打印和輸入。通過輸入的值選擇不同的子程序執(zhí)行,從而實現(xiàn)不同的功能;③調(diào)試步驟開啟調(diào)試調(diào)試過程(3)實驗結(jié)果與分析棧的相關(guān)操作順序隊列的相關(guān)操作(4)心得體會此次實驗相對于第一次試驗的還是很有進(jìn)步的,在實驗過程中雖然也遇到了很多問題,但是我通過自己的查詢資料和詢問同學(xué)最終還是把問題解決了,這極大的鼓舞了我,將我對程序的畏懼感打消了,不斷的理解數(shù)據(jù)結(jié)構(gòu)這門課程存在的意義和結(jié)構(gòu)化程序的寫法。相信在以后的時光里,我對編程會有更大的熱情和動力。在這次實驗
7、中我真正體驗到了,調(diào)試的步驟;以前覺得調(diào)試,就是盲目的去找問題,但這次在同學(xué)的幫助下,我開始認(rèn)識到調(diào)試其實是可以單步運行,然后觀察程序運行的結(jié)果的,這樣我們在調(diào)試程序時會有更高的效率;具體步驟如上所示;