




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、西南科技大學數(shù)據(jù)結構實驗報告實驗名稱: 棧的基本操作 實驗環(huán)境: windows 7 VS2010 實驗類別: 指導教師: 專業(yè)班級: 姓 名: 學 號: 一、 實驗目的1、 掌握棧的鏈式存儲結構2、 學會棧基本運算的實現(xiàn)二、 實驗內(nèi)容我所做的實驗是實驗題3.2,編寫程序3-2.cpp,實現(xiàn)鏈棧的各種基本運算,并在此基礎上設計一個主程序完成如下功能(1)、初始化鏈棧s;(2)、判斷鏈棧s是否非空;(3)、依次進棧元素a,b,c,d,e;(4)、判斷鏈棧s是否非空;(5)、輸出鏈棧長度;(6)、輸出從棧頂?shù)綏5自?;?)、輸出出鏈棧序列;(8)、判斷鏈棧s是否非空;(9)、釋放鏈棧。三、 實驗
2、過程本次實驗我是用C+來完成的,鏈棧也就是采用單鏈表實現(xiàn),鏈棧的優(yōu)點是不存在棧滿上溢的情況,規(guī)定棧的所有操作都是在單鏈表的表頭進行的,所以實現(xiàn)鏈棧也就是對單鏈表的簡化。下面具體介紹一下本次實驗的實驗過程:1、 初始化鏈棧要建立鏈棧的頭結點,并將其next域置為NULL。2、 鏈棧為空的條件是棧的指針的下一個指向空(s->next=NULL),也就是單鏈表中沒有數(shù)據(jù)結點。3、 進棧也就是將新數(shù)據(jù)結點插入到頭結點之后。4、 鏈棧的長度也就是從第一個數(shù)據(jù)結點開始掃描單鏈表,從而保存訪問的數(shù)據(jù)結點的個數(shù),然后將其值返回。5、 從棧頂?shù)綏5自氐妮敵鲆簿褪菑牡谝粋€數(shù)據(jù)結點開始掃描單鏈表嗎,并輸出當
3、前訪問結點的數(shù)據(jù)域值6、 輸出出棧序列是在棧不為空的條件下,將頭結點的指針域所指數(shù)據(jù)結點的數(shù)據(jù)域輸出,然后將其空間釋放,也就是刪除。7、 釋放鏈棧也就是對棧的銷毀,釋放棧占用的全部存儲空間四、 實驗結果本次實驗實現(xiàn)了棧的各種基本運算,并對其進行檢驗,均沒有發(fā)生錯誤,符合實驗要求。五、 實驗心得通過本次實驗,可以說我對單鏈表的操作再一次熟悉了一遍,并且了解到棧在實際應用當中也很廣泛,例如在計算器當中的表達式的求值可以用棧來實現(xiàn),DFS深度優(yōu)先搜索也可以用棧來實現(xiàn),從而解決了求解迷宮問題等等。通過學習棧,對大數(shù)據(jù)的處理也提供了遍歷,提高了代碼的可讀性。六、 實驗代碼#include<iost
4、ream>using namespace std;struct stack /定義鏈棧數(shù)據(jù)類型為stack,char data;/數(shù)據(jù)域stack *next;/指針域;stack *init()/該函數(shù)實現(xiàn)初始化鏈棧stack *s;s=new stack;/依然用new函數(shù)開辟空間s->next=NULL;/將其next域置為NULLreturn s;int emptystack(stack *s)/該函數(shù)實現(xiàn)鏈棧的判空操作return (s->next=NULL);/這里返回1為非空,0為空void push(stack *s,char ch)/該函數(shù)實現(xiàn)了進棧的功能i
5、nt i,q;stack *p; /首先要建立一個結點p=new stack;/為該結點開辟空間p->data=ch;/該結點的數(shù)據(jù)域為將進棧的元素p->next=s->next;/將p結點的下一個結點指向s結點的下一個結點,為了實現(xiàn)插入操作的對接s->next=p;/將s的下一個結點指向p,這樣就把p指向的數(shù)據(jù)插入到了s的后面int lengthstack(stack *s)/該函數(shù)實現(xiàn)了計算鏈棧的長度stack *p=s->next;/因為鏈棧s有頭結點,所以定義p指向s的下一個,因為s的下一個才有數(shù)據(jù)int n=0;while(p!=NULL)/通過棧中元素
6、指針指向地址遍歷實現(xiàn)計算鏈棧長度功能n+;/n的累加,返回鏈棧長度p=p->next;return n;void putstack(stack *s)/該函數(shù)實現(xiàn)了從棧頂?shù)綏5自氐妮敵?,其過程與計算鏈棧長度相似,只不過這次是把數(shù)據(jù)域中元素的輸出stack *p=s->next;while(p!=NULL)cout<<p->data;p=p->next;cout<<endl;void pop(stack *s)/該函數(shù)實現(xiàn)對棧中元素的輸出,是出棧功能,與上面的相似,這里就是多一個釋放空間的操作stack *p=s->next;stack *
7、q=s;if(q->next=NULL)return ;while(p!=NULL)cout<<p->data;q->next=p->next;/q指針跳過P指向的數(shù)據(jù),直接指向p的下一個free(p);/釋放空間p=q->next;cout<<endl;void destroystack(stack *s)/該函數(shù)實現(xiàn)了對棧的銷毀,釋放棧的存儲空間stack *p=s,*q=s->next;while(q)/挨個對空間進行釋放free(p);p=q;q=p->next;free(p);int main()int n,m,p,i
8、,q,flag;char ch,c;stack *S=init();/下面實現(xiàn)界面的友好cout<<"1:輸入進棧元素"<<endl<<"2:判斷棧S是否為空"<<endl<<"3:輸出鏈棧S長度"<<endl<<"4:輸出從棧頂?shù)綏5自?quot;<<endl<<"5:輸出出鏈棧序列"<<endl<<"6:釋放鏈棧"<<endl;while
9、(1)/實現(xiàn)了人性化操作cout<<"請選擇:"cin>>flag;if(flag=1)cout<<"請輸入要插入元素的個數(shù):"<<endl; cin>>q; cout<<"請輸入元素"<<endl;for(i=0;i<q;i+)cin>>ch;push(S,ch);if(flag=2)cout<<"判空:"<<emptystack(S)<<endl;if(flag=3)cout<<"鏈棧長度為:"<<lengthstack(S)<<endl;if(flag=4)cout
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度城市綠化工程資金籌措與欠款管理協(xié)議模板集
- 2025年度住宅小區(qū)樹木栽種與社區(qū)綠化維護合同
- 商業(yè)步行街裝修承包
- 2025年度房屋買賣合同協(xié)議書:二手房交易稅費版
- 個人消費借款居間協(xié)議范本
- 杭州市花鳥市場租賃合同
- 2025年度凍品冷鏈物流行業(yè)信用體系建設合同
- 2025年度智能電網(wǎng)項目入股合同協(xié)議書
- 2025年度大型酒店調料及香料定制采購合同
- 2025年度城市更新項目委托代理房屋買賣合同
- 充電樁采購安裝售后服務方案
- 《旅行社條例》和《旅行社管理條例》對比解讀
- 柳宗元抑郁而堅貞的一生
- 鄉(xiāng)鎮(zhèn)人大代表選舉結果情況報告單
- BOPP雙向拉伸薄膜及膠帶生產(chǎn)項目環(huán)境影響報告
- 頻譜儀N9020A常用功能使用指南
- 復工復產(chǎn)安全生產(chǎn)培訓試卷
- 天津高考英語詞匯3500
- 上海市2023年中考數(shù)學試卷(附答案)
- 《種太陽》公開課課件
- access上機練習題題庫
評論
0/150
提交評論