版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、C+程序設計實驗報告姓名:庹磊學院:計算機智能科學類班級:0401310學號:2013211732時間:2014-2015(2)指導教師:馮瀟1題目:(類模板的使用)實現(xiàn)棧數(shù)據(jù)結構,功能可以包括入棧、出棧、清空棧等動作。2思路:堆棧的定義設計template <class Type>class seqstackpublic: seqstack(); /創(chuàng)建一個空棧 seqstack(int size); /創(chuàng)建一個可以容納size個元素的棧 seqstack(); /析構函數(shù) bool create(int size); /實際創(chuàng)建一個可以容納size個元素的棧 void dest
2、roy(); /棧的銷毀 bool isempty() const; /確定棧是否為空 bool isfull() const; /確定棧是否已滿 bool push(Type &item); /數(shù)據(jù)進棧 bool pop(); /數(shù)據(jù)出棧 bool pop(Type &item); /數(shù)據(jù)出棧,并返回出棧前的棧頂數(shù)據(jù) bool gettop(Type &item); /顯示當前棧頂元素 void display(); /顯示所有數(shù)據(jù)元素private: Type *stackspace; /指向棧的指針 int stacksize; /棧的大小,當為0時,表示棧沒有創(chuàng)
3、建空間 int top; /top棧頂位置,當為-1時,棧為空;功能實現(xiàn)代碼/棧的初始化template<class Type> /此語句關鍵,需注意seqstack<Type>:seqstack() stackspace=NULL; stacksize=0; top=-1;/創(chuàng)建一個空棧template<class Type>seqstack<Type>:seqstack(int size) stackspace=NULL; stacksize=0; top=-1; create(size);/棧的析構函數(shù)template<class T
4、ype>seqstack<Type>:seqstack() destroy();/實際棧的創(chuàng)建函數(shù)template<class Type>bool seqstack<Type>:create(int size) if(stacksize) /棧已經(jīng)創(chuàng)建,不能繼續(xù)創(chuàng)建 return false; if(size<=0) /size的值必須大于0 return false; stackspace=new Typesize; if(!stackspace) /沒有申請到存儲空間(棧已滿) return false; stacksize=size; to
5、p=-1; return true;/銷毀棧的函數(shù)template<class Type>void seqstack<Type>:destroy() if(stackspace) delete stackspace; stackspace=NULL; top=-1; stacksize=0;/判斷棧是否為空template<class Type>bool seqstack<Type>:isempty() const if(!stackspace) return true; return top>=0?false:true;/判斷棧是否已滿t
6、emplate<class Type>bool seqstack<Type>:isfull() const if(!stacksize) /確定棧是否被創(chuàng)建,沒有創(chuàng)建是為已滿 return true; return top=stacksize-1?true:false;/進棧函數(shù)template<class Type>bool seqstack<Type>:push(Type &item) if(!stackspace) return false; if(isfull() return false; stackspace+top=item
7、; return true;/出棧函數(shù),不返回棧頂元素template<class Type>bool seqstack<Type>:pop() if(empty() return flase; top-; return ture;/出棧函數(shù),但返回棧頂元素template<class Type>bool seqstack<Type>:pop(Type &item) if(isempty() /判斷棧是否為空 return false; item=stackspacetop-; return true;/得到棧頂數(shù)據(jù)元素template&
8、lt;class Type>bool seqstack<Type>:gettop(Type &item) if(isempty() return false; item=stackspacetop; return true;/顯示所有數(shù)據(jù)元素template<class Type>void seqstack<Type>:display() if(stacksize) cout<<"目前棧的所有的數(shù)據(jù)元素為: " cout<<"棧底是: " for(int i=0;i<=top
9、;i+) cout<<stackspacei<<" " cout<<"棧頂"<<endl; else cout<<"棧尚未建立!"<<endl;主程序void main() seqstack<int> stacknow;/若想輸入字符,將此語句中的int改為char即可 char yesno,userchoice='9' int newstacksize,datain,dataout; while(1) if(userchoice=
10、39;9') system("cls"); cout<<"="<<endl <<"順序棧的基本操作程序"<<endl <<"="<<endl <<"1:創(chuàng)建一個棧"<<endl <<"2:銷毀一個棧"<<endl <<"3:數(shù)據(jù)進棧"<<endl <<"4:數(shù)據(jù)出棧"<
11、<endl <<"5:顯示所有數(shù)據(jù)元素"<<endl <<"6:讀取棧底元素"<<endl <<"7:判斷棧是否為空"<<endl <<"8:判斷棧是否已滿"<<endl <<"9:清屏"<<endl <<"0:退出程序"<<endl; cout<<"="<<endl <<
12、"請輸入你的選擇: "<<endl; cin>>userchoice; if(userchoice='0') cout<<"程序已經(jīng)退出,感謝你的使用!"<<endl; exit(0); switch(userchoice) case'1': cout<<"開始創(chuàng)建棧,請輸入棧的空間大小 " cin>>newstacksize; if(stacknow.create(newstacksize) cout<<"創(chuàng)
13、建成功,棧的大小是: "<<newstacksize<<endl; else /考慮要全面 cout<<"創(chuàng)建失敗!"<<endl; break; case'2': cout<<"你確定要銷毀一個棧嗎?(若銷毀請輸入輸入(Y/y)" cin>>yesno; if(yesno='Y'|yesno='y') stacknow.destroy(); cout<<"棧已被銷毀!"<<endl
14、; break; case'3': cout<<"請輸入要入棧數(shù)據(jù): " cin>>datain; if(stacknow.push(datain) cout<<"數(shù)據(jù) "<<datain<<"已經(jīng)入棧成功!"<<endl; stacknow.display(); else cout<<"數(shù)據(jù) "<<datain<<"進棧失敗!"<<endl; break; c
15、ase'4': if(stacknow.pop(dataout) cout<<"從棧中成功出棧的數(shù)據(jù)為: "<<dataout<<endl; stacknow.display(); else cout<<"出棧失敗!"<<endl; break; case'5': stacknow.display(); break; case'6': if(stacknow.gettop(dataout) cout<<"棧頂元素為 "
16、;<<dataout<<endl; stacknow.display(); else cout<<"獲取棧頂元素失敗!"<<endl; break; case'7': if(stacknow.isempty() cout<<"目前是空棧或者是棧尚未建立!"<<endl; else cout<<"目前棧非空!"<<endl; break; case'8': if(stacknow.isfull() cout&l
17、t;<"目前棧滿或者棧尚未建立!"<<endl; else cout<<"目前棧不滿,還可以繼續(xù)輸入數(shù)據(jù)進棧!"<<endl; break; case'9': break; default: cout<<"輸入數(shù)據(jù)有誤!"<<endl; break; 4調(diào)試過程:5最終程序代碼#include<iostream.h>#include<conio.h>#include<string.h>#include<stdli
18、b.h>/基于類模板的設計template <class Type>class seqstackpublic: seqstack(); /創(chuàng)建一個空棧 seqstack(int size); /創(chuàng)建一個可以容納size個元素的棧 seqstack(); /析構函數(shù) bool create(int size); /實際創(chuàng)建一個可以容納size個元素的棧 void destroy(); /棧的銷毀 bool isempty() const; /確定棧是否為空 bool isfull() const; /確定棧是否已滿 bool push(Type &item); /數(shù)據(jù)進
19、棧 bool pop(); /數(shù)據(jù)出棧 bool pop(Type &item); /數(shù)據(jù)出棧,并返回出棧前的棧頂數(shù)據(jù) bool gettop(Type &item); /顯示當前棧頂元素 void display(); /顯示所有數(shù)據(jù)元素private: Type *stackspace; /指向棧的指針 int stacksize; /棧的大小,當為0時,表示棧沒有創(chuàng)建空間 int top; /top棧頂位置,當為-1時,棧為空;/棧的初始化template<class Type> /此語句關鍵,需注意seqstack<Type>:seqstack(
20、) stackspace=NULL; stacksize=0; top=-1;/創(chuàng)建一個空棧template<class Type>seqstack<Type>:seqstack(int size) stackspace=NULL; stacksize=0; top=-1; create(size);/棧的析構函數(shù)template<class Type>seqstack<Type>:seqstack() destroy();/實際棧的創(chuàng)建函數(shù)template<class Type>bool seqstack<Type>:c
21、reate(int size) if(stacksize) /棧已經(jīng)創(chuàng)建,不能繼續(xù)創(chuàng)建 return false; if(size<=0) /size的值必須大于0 return false; stackspace=new Typesize; if(!stackspace) /沒有申請到存儲空間(棧已滿) return false; stacksize=size; top=-1; return true;/銷毀棧的函數(shù)template<class Type>void seqstack<Type>:destroy() if(stackspace) delete st
22、ackspace; stackspace=NULL; top=-1; stacksize=0;/判斷棧是否為空template<class Type>bool seqstack<Type>:isempty() const if(!stackspace) return true; return top>=0?false:true;/判斷棧是否已滿template<class Type>bool seqstack<Type>:isfull() const if(!stacksize) /確定棧是否被創(chuàng)建,沒有創(chuàng)建是為已滿 return true
23、; return top=stacksize-1?true:false;/進棧函數(shù)template<class Type>bool seqstack<Type>:push(Type &item) if(!stackspace) return false; if(isfull() return false; stackspace+top=item; return true;/出棧函數(shù),不返回棧頂元素template<class Type>bool seqstack<Type>:pop() if(empty() return flase; t
24、op-; return ture;/出棧函數(shù),但返回棧頂元素template<class Type>bool seqstack<Type>:pop(Type &item) if(isempty() /判斷棧是否為空 return false; item=stackspacetop-; return true;/得到棧頂數(shù)據(jù)元素template<class Type>bool seqstack<Type>:gettop(Type &item) if(isempty() return false; item=stackspacetop
25、; return true;/顯示所有數(shù)據(jù)元素template<class Type>void seqstack<Type>:display() if(stacksize) cout<<"目前棧的所有的數(shù)據(jù)元素為: " cout<<"棧底是: " for(int i=0;i<=top;i+) cout<<stackspacei<<" " cout<<"棧頂"<<endl; else cout<<&quo
26、t;棧尚未建立!"<<endl;/主程序void main() seqstack<int> stacknow;/若想輸入字符,將此語句中的int改為char即可 char yesno,userchoice='9' int newstacksize,datain,dataout; while(1) if(userchoice='9') system("cls"); cout<<"="<<endl <<"順序棧的基本操作程序"<&l
27、t;endl <<"="<<endl <<"1:創(chuàng)建一個棧"<<endl <<"2:銷毀一個棧"<<endl <<"3:數(shù)據(jù)進棧"<<endl <<"4:數(shù)據(jù)出棧"<<endl <<"5:顯示所有數(shù)據(jù)元素"<<endl <<"6:讀取棧底元素"<<endl <<"7:判
28、斷棧是否為空"<<endl <<"8:判斷棧是否已滿"<<endl <<"9:清屏"<<endl <<"0:退出程序"<<endl; cout<<"="<<endl <<"請輸入你的選擇: "<<endl; cin>>userchoice; if(userchoice='0') cout<<"程序已經(jīng)退出,
29、感謝你的使用!"<<endl; exit(0); switch(userchoice) case'1': cout<<"開始創(chuàng)建棧,請輸入棧的空間大小 " cin>>newstacksize; if(stacknow.create(newstacksize) cout<<"創(chuàng)建成功,棧的大小是: "<<newstacksize<<endl; else /考慮要全面 cout<<"創(chuàng)建失敗!"<<endl; brea
30、k; case'2': cout<<"你確定要銷毀一個棧嗎?(若銷毀請輸入輸入(Y/y)" cin>>yesno; if(yesno='Y'|yesno='y') stacknow.destroy(); cout<<"棧已被銷毀!"<<endl; break; case'3': cout<<"請輸入要入棧數(shù)據(jù): " cin>>datain; if(stacknow.push(datain) cout<<"數(shù)據(jù) "<<datain<<&q
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版寄賣合同范本:農(nóng)產(chǎn)品寄售協(xié)議書3篇
- 二零二五版植物營養(yǎng)肥料試驗與研究服務合同3篇
- 二零二五年度紅色文化遺址保護與修復合同3篇
- 二零二五版躉購電合同:電力批發(fā)市場交易合同2篇
- 二零二五年度智能化辦公大樓安全防范系統(tǒng)合同2篇
- 二零二五版白酒品牌授權及市場開發(fā)總代理合同3篇
- 二零二五版?zhèn)€人短期借款合同標準格式解讀3篇
- 二零二五年車況良好汽車租賃及道路救援服務合同2篇
- 二零二五年度技術研發(fā)項目委托合同3篇
- 二零二五版科技班組承包經(jīng)營合同樣本3篇
- 一年級科學人教版總結回顧2
- 格式塔心理咨詢理論與實踐
- 精神發(fā)育遲滯的護理查房
- 有效排痰的護理ppt(完整版)
- 魯教版七年級數(shù)學下冊(五四制)全冊完整課件
- 英語六級詞匯(全)
- 算法向善與個性化推薦發(fā)展研究報告
- 聚合物的流變性詳解演示文稿
- 電氣設備預防性試驗安全技術措施
- 醫(yī)院出入口安檢工作記錄表范本
- 內(nèi)科學教學課件:免疫性血小板減少癥(ITP)
評論
0/150
提交評論