版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)驗(yàn)2順序表問題描述:實(shí)現(xiàn)順序表,根本操作包括構(gòu)造、析構(gòu)、插入、查找、刪除、取值、賦值。需求分析簡(jiǎn)述程序的根本功能:建立一個(gè)類模板;創(chuàng)立了一個(gè)構(gòu)造函數(shù),用于動(dòng)態(tài)的申請(qǐng)一定的空間;創(chuàng)立了一個(gè)析構(gòu)函數(shù),用于釋放動(dòng)態(tài)申請(qǐng)的空間;還可以對(duì)順序表進(jìn)行查找、插入、刪除操作;以及對(duì)順序表中的元素的輸入輸出等等。輸入的形式和輸入值的范圍:首先輸入要?jiǎng)?chuàng)立的順序表的容量,形式為整形int;然后在操作選項(xiàng)中輸入形式為字符型,有一定的容錯(cuò)能力,輸出的形式:程序開始時(shí)創(chuàng)立數(shù)組需要輸入容量,輸入形式為整形int;用戶選擇1選項(xiàng)時(shí),程序會(huì)提示用戶輸入元素的個(gè)數(shù)并給出范圍,輸入形式為整形int,然后開始輸入元素;用戶選擇2選項(xiàng)時(shí),程序會(huì)逐個(gè)輸出現(xiàn)有的元素;用戶選擇3選項(xiàng)時(shí),程序會(huì)提示輸入所要查找的元素,輸入形式為字符型char,然后進(jìn)行逐個(gè)查找,并該輸出元素的位置以及所找到的個(gè)數(shù);用戶選擇4選項(xiàng)時(shí),程序會(huì)提示輸入所要查看的位置并給出范圍,輸入形式為整形int,然后輸出該位置的元素;用戶選擇5選項(xiàng)時(shí),程序會(huì)提示輸入所要插入的位置以及現(xiàn)有的位置,輸入形式為整形int,然后可以輸入所要插入的元素,輸入形式為字符型char;用戶選擇6選項(xiàng)時(shí),程序會(huì)提示輸入您所要?jiǎng)h除的元素,輸入形式為字符型char,然后會(huì)輸出刪除的元素位置以及個(gè)數(shù);用戶選擇7選項(xiàng)時(shí),程序會(huì)輸出現(xiàn)在列表中的元素個(gè)數(shù);用戶選擇8選項(xiàng)時(shí),程序會(huì)輸出數(shù)組的容量及最多可容納元素個(gè)數(shù);用戶選擇9選項(xiàng)時(shí),程序清空列表刪除列表中的所有元素;用戶選擇0選項(xiàng)時(shí),程序結(jié)束。測(cè)試數(shù)據(jù)要求、選擇選項(xiàng)時(shí),不管輸入幾個(gè)字符,只讀取第一個(gè)字符;、選擇選項(xiàng)時(shí),輸入的字符不能過多,假設(shè)輸入過多的字符就會(huì)出現(xiàn)異常;、輸入元素時(shí),每個(gè)元素只能是一個(gè)字符,輸入多個(gè)字符會(huì)出錯(cuò);、在輸入、查找、插入元素時(shí),會(huì)有范圍提示,超出范圍程序提示錯(cuò)誤,并可以重新輸入;、在查找和刪除元素時(shí),假設(shè)沒有此元素,會(huì)給出提示;概要設(shè)計(jì)抽象數(shù)據(jù)類型:在該程序中,定義了一個(gè)類模板templateclassTSeqList,在該類中有*m_elem、m_len和m_maxsize三個(gè)私有成員分別表示該類的列表指針、現(xiàn)有元素個(gè)數(shù)和列表最大容量;自己定義了構(gòu)造函數(shù)TSeqList()和析構(gòu)函數(shù)~TSeqList(),還有對(duì)列表進(jìn)行輸入、輸出、查找、插入以及刪除等操作的函數(shù);并在主函數(shù)中對(duì)該類模板進(jìn)行實(shí)例化。主程序流程及模塊調(diào)用關(guān)系結(jié)束結(jié)束NY調(diào)用函數(shù)input()輸入數(shù)據(jù)按照元素查找元素按照位置查看元素在指定位置插入元素提示輸入錯(cuò)誤刪除指定的元素調(diào)用函數(shù)output()輸出數(shù)據(jù)輸出現(xiàn)有的數(shù)據(jù)個(gè)數(shù)輸出數(shù)組的最大容量清空列表令a=false開始賦值a=true調(diào)用cmain〔〕函數(shù)輸出主菜單輸入選項(xiàng)i的值i[0]=1i[0]=2i[0]=3i[0]=4i[0]=5i[0]=6i[0]=其它值a=true?創(chuàng)立char類型數(shù)組i[0]=7i[0]=8i[0]=9i[0]=0詳細(xì)設(shè)計(jì)抽象數(shù)據(jù)類型的實(shí)現(xiàn):包括類型定義和各個(gè)操作的實(shí)現(xiàn)。類的定義與實(shí)現(xiàn)list.h文件:#include<iostream>usingnamespacestd;template<classT>classTSeqList{ private: T*m_elem; //用于存放數(shù)組的指針 intm_maxsize; //數(shù)組的最大容量 intm_len; //現(xiàn)有元素個(gè)數(shù) public: TSeqList(); //構(gòu)造函數(shù) ~TSeqList(){delete[]m_elem;}; //析構(gòu)函數(shù) voidLength(){cout<<"數(shù)組的長(zhǎng)度:"<<m_len<<endl;}; //用于輸出現(xiàn)有元素個(gè)數(shù)的函數(shù) voidSize(){cout<<"數(shù)組最多容納元素個(gè)數(shù):"<<m_maxsize<<endl;}; //輸出數(shù)組容量的函數(shù) voidSearch1(); //按照元素進(jìn)行查找 voidSearch2(); //按照元素位置進(jìn)行查找 voidInsert(); //插入元素 voiddel(); //刪除元素 boolSeqEmputy(){cout<<"清空列表。";m_len=0;Length();return(m_len==0)?true:false;};//清空列表 voidoutput(); //輸出元素 voidinput(); //輸入元素};constintm_extend=10;template<classT>TSeqList<T>::TSeqList(){ cout<<"輸入要?jiǎng)?chuàng)立數(shù)組最多容納元素個(gè)數(shù):"; cin>>m_maxsize; m_len=0; m_elem=newT[m_maxsize];}template<classT>voidTSeqList<T>::Search1(){ Te;inti,j=0; cout<<"請(qǐng)查找元素:";cin>>e; cout<<"輸出它的位置:"<<endl; for(i=0;i<m_len;i++) if(m_elem[i]==e) { cout<<"第"<<i+1<<"位"<<endl; j++; } if(j==0)cout<<"沒有這個(gè)元素!"<<endl; elsecout<<"共查找到"<<j<<"個(gè)"<<e<<"元素"<<endl;}template<classT>voidTSeqList<T>::Search2(){ inti; if(m_len) { cout<<"請(qǐng)輸入要查找的位置"<<"〔1~"<<m_len<<"〕:"; while(true) { cin>>i; if(i<1||i>m_len)cout<<"無此位置!請(qǐng)重新輸入:"; elsebreak; } cout<<"第"<<i<<"元素是"<<m_elem[i-1]<<endl; } elsecout<<"列表為空,無法查詢!"<<endl;}template<classT>voidTSeqList<T>::del(){ inti,j,k=0;Te; if(m_len) { cout<<"輸入要?jiǎng)h除的元素:"; cin>>e; cout<<"您要?jiǎng)h除的元素是:"<<e<<endl; for(i=m_len-1;i>=0;i--) { if(m_elem[i]==e) { m_len--; for(j=i;j<m_len;j++) { m_elem[j]=m_elem[j+1]; } k++; cout<<"刪除了第"<<i+1<<"元素"<<e<<endl; } } if(k==0)cout<<"沒有這個(gè)元素!"<<endl; elsecout<<"共刪除了"<<k<<"個(gè)"<<e<<"元素"<<endl; } elsecout<<"列表為空!不能刪除!"<<endl;}template<classT>voidTSeqList<T>::Insert(){ inti;Te; cout<<"輸入要插入的位置〔在1到"<<m_len+1<<"之間〕:"; cin>>i;loop:if(i<1||i>m_len+1) { cout<<"無此位置!重新輸入位置〔在1到"<<m_len+1<<"之間〕:"; cin>>i; gotoloop; } cout<<"輸入要插入的元素:"; cin>>e; if(m_len==m_maxsize) { T*p=newT[m_maxsize+=m_extend]; for(intk=0;k<=m_len;k++) p[k]=m_elem[k]; delete[]m_elem; m_elem=p; cout<<"空間已滿,現(xiàn)在已經(jīng)擴(kuò)充......"<<endl; Size(); } if(i==++m_len) { m_elem[i-1]=e; } else { for(intk=m_len;k>=i;k--) m_elem[k]=m_elem[k-1]; m_elem[i-1]=e; }}template<classT>voidTSeqList<T>::output(){ if(m_len==0)cout<<"沒有任何元素!"<<endl; else { for(inti=0;i<m_len;i++) cout<<"第"<<i+1<<"個(gè)元素是"<<m_elem[i]<<endl; }}template<classT>voidTSeqList<T>::input(){ cout<<"開始建立順序表,輸入元素個(gè)數(shù)〔≤"<<m_maxsize<<"〕:"; cin>>m_len; boola=true; while(a) { if(m_len>m_maxsize) { cout<<"元素個(gè)數(shù)已經(jīng)超過"<<m_maxsize<<"!"<<endl; cout<<"重新輸入元素個(gè)數(shù)〔≤"<<m_maxsize<<"〕:"; cin>>m_len; } elsea=false; } for(inti=0;i<m_len;i++) {cout<<i+1<<" ";cin>>m_elem[i];}}其他主要算法的實(shí)現(xiàn)菜單輸出函數(shù)文件cmain.h文件:#include<iostream>usingnamespacestd;voidcmain() //主界面的菜單函數(shù){ cout<<"***********************************"<<endl; cout<<"主菜單"<<endl; cout<<"1.輸入數(shù)據(jù)元素2.輸出數(shù)據(jù)元素"<<endl; cout<<"3.按元素查找4.按位置查找"<<endl; cout<<"5.插入元素6.刪除元素"<<endl; cout<<"7.現(xiàn)有數(shù)據(jù)個(gè)數(shù)8.數(shù)組總長(zhǎng)度"<<endl; cout<<"9.清空列表0.退出程序"<<endl; cout<<"注意:1.選擇時(shí)不能輸入過多字符〔<20個(gè)〕"<<endl; cout<<"2.選擇時(shí)只讀取第一個(gè)字符"<<endl; cout<<"***********************************"<<endl; cout<<"請(qǐng)輸入選項(xiàng)〔1~9〕:";}主程序的實(shí)現(xiàn)cmain.cpp文件:#include"list.h"#include"cmain.h"#include<iostream>usingnamespacestd;voidmain(){ cout<<" 歡送使用該順序表程序!"<<endl<<endl; TSeqList<char>str; chari[20]; boola=true; while(a) //循環(huán)結(jié)構(gòu)進(jìn)行各項(xiàng)操作 { cmain(); cin>>i; switch(i[0]) { case'1':str.input();break; //輸入數(shù)據(jù) case'2':str.output();break; //輸出數(shù)據(jù) case'3':str.Search1();break; //按照元素查找元素 case'4':str.Search2();break; //按照位置查找元素 case'5':str.Insert();break; //插入數(shù)據(jù) case'6':str.del();break; //刪除數(shù)據(jù) case'7':str.Length();break; //輸出數(shù)組現(xiàn)有數(shù)據(jù)量 case'8':str.Size();break; //輸出數(shù)組的最大容量 case'9':str.SeqEmputy();break; //清空數(shù)據(jù)列表 case'0':a=false;break; //退出程序 default:cout<<"輸入錯(cuò)誤!無此選項(xiàng),請(qǐng)重新輸入!"<<endl;//輸入錯(cuò)誤指令,報(bào)錯(cuò)! } } }測(cè)試結(jié)果列出幾組輸入和輸出結(jié)果,輸入集應(yīng)多于需求分析的數(shù)據(jù)。1〕、翻開程序后,先輸入所要?jiǎng)?chuàng)立數(shù)組的容量:2〕、然后就可以選擇各種功能按鈕了,可以輸入0~9選項(xiàng)〔只讀取第一個(gè)字符〕:3〕、假設(shè)輸入錯(cuò)誤,會(huì)給出提示且可以重新輸入〔這里輸入的是qwer〕4〕、當(dāng)輸入1時(shí),會(huì)要求輸入您所要輸入的元素的個(gè)數(shù)〔這里
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版土地使用權(quán)出讓居間合同規(guī)范文本-城市綜合體開發(fā)3篇
- 二零二五版住宅小區(qū)車位產(chǎn)權(quán)轉(zhuǎn)移及使用權(quán)購(gòu)買合同3篇
- 2025版住宅小區(qū)消防設(shè)備設(shè)施定期檢查與維護(hù)合同范本2篇
- 2025年度木門行業(yè)環(huán)保認(rèn)證與推廣合同3篇
- 2025年度國(guó)際物流合作解約及責(zé)任分擔(dān)協(xié)議書
- 二零二五年度美容店轉(zhuǎn)讓合同包括美容院品牌授權(quán)及區(qū)域代理權(quán)
- 2025年度二零二五年度大型活動(dòng)臨時(shí)工人搬運(yùn)服務(wù)承包協(xié)議
- 2025年度私人承包廠房租賃合同安全責(zé)任追究協(xié)議
- 二零二五板材行業(yè)數(shù)據(jù)分析與市場(chǎng)預(yù)測(cè)合同3篇
- 二零二五年度鏟車清雪作業(yè)安全責(zé)任保險(xiǎn)合同
- 中考模擬考試化學(xué)試卷與答案解析(共三套)
- 新人教版五年級(jí)小學(xué)數(shù)學(xué)全冊(cè)奧數(shù)(含答案)
- 風(fēng)電場(chǎng)升壓站培訓(xùn)課件
- 收納盒注塑模具設(shè)計(jì)(論文-任務(wù)書-開題報(bào)告-圖紙)
- 博弈論全套課件
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 腦電信號(hào)處理與特征提取
- 高中數(shù)學(xué)知識(shí)點(diǎn)全總結(jié)(電子版)
- GB/T 10322.7-2004鐵礦石粒度分布的篩分測(cè)定
- 2023新譯林版新教材高中英語(yǔ)必修一重點(diǎn)詞組歸納總結(jié)
- 蘇教版四年級(jí)數(shù)學(xué)下冊(cè)第3單元第2課時(shí)“常見的數(shù)量關(guān)系”教案
評(píng)論
0/150
提交評(píng)論