實(shí)驗(yàn)2 鏈表驗(yàn)證實(shí)驗(yàn)_第1頁(yè)
實(shí)驗(yàn)2 鏈表驗(yàn)證實(shí)驗(yàn)_第2頁(yè)
實(shí)驗(yàn)2 鏈表驗(yàn)證實(shí)驗(yàn)_第3頁(yè)
實(shí)驗(yàn)2 鏈表驗(yàn)證實(shí)驗(yàn)_第4頁(yè)
實(shí)驗(yàn)2 鏈表驗(yàn)證實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

實(shí)驗(yàn)2鏈表驗(yàn)證實(shí)驗(yàn)實(shí)驗(yàn)2鏈表驗(yàn)證實(shí)驗(yàn)實(shí)驗(yàn)2鏈表驗(yàn)證實(shí)驗(yàn)實(shí)驗(yàn)2鏈表驗(yàn)證實(shí)驗(yàn)編制僅供參考審核批準(zhǔn)生效日期地址:電話:傳真:郵編:班級(jí):計(jì)算機(jī)13-2學(xué)號(hào):1姓名:成績(jī):_________實(shí)驗(yàn)二單鏈表操作驗(yàn)證實(shí)驗(yàn)?zāi)康恼莆站€性表的鏈接存儲(chǔ)結(jié)構(gòu);驗(yàn)證單鏈表及其基本操作的實(shí)現(xiàn);進(jìn)一步掌握數(shù)據(jù)結(jié)構(gòu)及算法的程序?qū)崿F(xiàn)的基本方法。實(shí)驗(yàn)內(nèi)容用頭插法(或尾插法)建立帶頭結(jié)點(diǎn)的單鏈表;對(duì)已建立的單鏈表實(shí)現(xiàn)插入、刪除、查找等基本操作。。設(shè)計(jì)與編碼本實(shí)驗(yàn)用到的理論知識(shí)模板類、多文件系統(tǒng),鏈表的操作算法設(shè)計(jì)參見課本《數(shù)據(jù)結(jié)構(gòu)(C++版)》編碼將算法轉(zhuǎn)化為c++程序,設(shè)計(jì)主函數(shù)完成對(duì)各成員函數(shù)的調(diào)用。源代碼://#ifndef_LINKLIST_H#define_LINKLIST_H#include<iostream>usingnamespacestd;template<classT>structNode{ Tdata; structNode<T>*next;};template<classT>classLinkList{ Node<T>*first;//單鏈表的頭指針public: LinkList(Ta[],intn);//建立有n個(gè)元素的單鏈表 ~LinkList();//析構(gòu)函數(shù) voidCreateList(intn); voidInsert(inti,Tx);//在單鏈表中第i個(gè)位置插入值為x的節(jié)點(diǎn) TDelete(inti);//在單鏈表中刪除第i個(gè)節(jié)點(diǎn) intLocate(Tx);//求單鏈表中值為x的序號(hào) voidPrintList();//遍歷單鏈表,按序號(hào)依次輸出個(gè)元素};template<classT>LinkList<T>::LinkList(Ta[],intn){ first=newNode<T>; first->next=NULL;//初始化一個(gè)空鏈表 for(inti=n;i>=0;i--){ Node<T>*s; s=newNode<T>; s->data=a[i]; s->next=first->next;//為每個(gè)數(shù)組元素建立一個(gè)結(jié)點(diǎn) first->next=s;//插入到頭結(jié)點(diǎn)之后 }}//構(gòu)造函數(shù),創(chuàng)建一個(gè)新的鏈表template<classT>LinkList<T>::~LinkList(){ Node<T>*p; p=newNode<T>; p=first;//工作指針p初始化 while(p){//釋放單鏈表的每一個(gè)結(jié)點(diǎn)的存儲(chǔ)空間 Node<T>*q; q=newNode<T>; q=p;//暫存被釋放結(jié)點(diǎn) p=p->next;//工作指針p指向被釋放結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn),使單鏈表不斷開 deleteq; }}//析構(gòu)函數(shù),釋放空間template<classT>voidLinkList<T>::Insert(inti,Tx){ Node<T>*p; p=newNode<T>; p=first;//工作指針p初始化 intj=0; while(p&&j<i-1){ p=p->next;//工作指針p后移 j++; } if(!p)throw"位置"; else{ Node<T>*s; s=newNode<T>; s->data=x;//向內(nèi)存申請(qǐng)一個(gè)結(jié)點(diǎn)s,其數(shù)據(jù)域?yàn)閤 s->next=p->next;//將結(jié)點(diǎn)s插入到結(jié)點(diǎn)p之前 p->next=s; }}//插入元素到位置itemplate<classT>TLinkList<T>::Delete(inti){ Node<T>*p,*q; Tx; p=newNode<T>; p=first; intj=0;//工作指針p初始化 while(p&&j<i-1){//查找第i-1個(gè)結(jié)點(diǎn) p=p->next; j++; } if(!p||!p->next) throw"位置";//結(jié)點(diǎn)p不存在或結(jié)點(diǎn)p的后繼結(jié)點(diǎn)不存在 else{ q=p->next; x=q->data;//暫存被刪結(jié)點(diǎn) p->next=q->next;//摘鏈 deleteq; returnx; }}//刪除位置i的函數(shù)template<classT>intLinkList<T>::Locate(Tx){ Node<T>*p; p=newNode<T>; p=first->next; intj=1; while(p&&p->data!=x){ p=p->next;//工作指針p后移 j++; } if(p) returnj; else return0;}//查找template<classT>voidLinkList<T>::PrintList(){ Node<T>*p;//設(shè)置工作指針 p=first->next;//從首元結(jié)點(diǎn)開始遍歷 inti=1;//元素位序 while(p) { cout<<p->data<<"\t"; p=p->next; i++; } cout<<endl;}//遍歷顯示鏈表#endif//#include<iostream>#include""#include""usingnamespacestd;charpause;//typedefintT;intmain(){ intn; cout<<"輸入要?jiǎng)?chuàng)建的鏈表的元素個(gè)數(shù)(<100):"; cin>>n; cout<<endl; inta[100]; cout<<"請(qǐng)依次輸入數(shù)組元素的值。"<<endl; for(inti=0;i<n;i++){ cout<<"輸入a["<<i<<"]的值:"; cin>>a[i]; cout<<endl; } LinkList<int>L(a,n);// //Tnum,prior_num; //intnum,prior_num; intnum; intchoice; do { cout<<"1-插入操作\n"; cout<<"2-刪除操作\n"; cout<<"3-查找操作\n"; cout<<"4-輸出鏈表\n"; cout<<"5-退出\n"; cout<<"輸入選擇的操作:"; cin>>choice; switch(choice) { case1://在指定位置插入元素 inti; cout<<"輸入要插入位置:"; cin>>i; cout<<endl; cout<<"輸入要插入元素的值:"; cin>>num; cout<<endl; try { (i,num); } catch(char*error) { cout<<error<<endl; } break; case2://刪除指定位置元素 cout<<"輸入想刪除位置:"; cin>>i; cout<<endl; try { num=(i); cout<<"被刪除元素為:"<<num<<endl; } catch(char*error) { cout<<error<<endl; } break; case3://按值查找 cout<<"輸入要查詢的值:"; cin>>num;// i=(num); cout<<"查詢的元素"<<num<<"位于鏈表的位置為:"<<i<<endl; break; case4://顯示表 (); cout<<endl; break; case5://退出 cout<<"Exit"<<endl; break; default: cout<<"無效的選項(xiàng)\n"; break; } }while(choice!=5); return0;}運(yùn)行與調(diào)試在調(diào)試程序的過程中遇到什么問題,是如何解決的進(jìn)行運(yùn)行時(shí)沒有錯(cuò)誤,但輸出的數(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論