實(shí)驗(yàn)一-鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)線性表_第1頁
實(shí)驗(yàn)一-鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)線性表_第2頁
實(shí)驗(yàn)一-鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)線性表_第3頁
實(shí)驗(yàn)一-鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)線性表_第4頁
實(shí)驗(yàn)一-鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)線性表_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

實(shí)驗(yàn)一——鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)線性表實(shí)驗(yàn)一——鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)線性表實(shí)驗(yàn)一——鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)線性表實(shí)驗(yàn)一——鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)線性表編制僅供參考審核批準(zhǔn)生效日期地址:電話:傳真:郵編:數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報告實(shí)驗(yàn)名稱:實(shí)驗(yàn)一——鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)線性表學(xué)生姓名:班級:班內(nèi)序號:學(xué)號:日期:實(shí)驗(yàn)要求實(shí)驗(yàn)?zāi)康模和ㄟ^選擇下面四個題目之一進(jìn)行實(shí)現(xiàn),掌握如下內(nèi)容:熟悉C++語言的基本編程方法,掌握集成編譯環(huán)境的調(diào)試方法學(xué)習(xí)指針、模板類、異常處理的使用掌握線性表的操作的實(shí)現(xiàn)方法學(xué)習(xí)使用線性表解決實(shí)際問題的能力實(shí)驗(yàn)內(nèi)容:根據(jù)線性表的抽象數(shù)據(jù)類型的定義,選擇下面任一種鏈?zhǔn)浇Y(jié)構(gòu)實(shí)現(xiàn)線性表,并完成線性表的基本功能。線性表存儲結(jié)構(gòu)(五選一):帶頭結(jié)點(diǎn)的單鏈表不帶頭結(jié)點(diǎn)的單鏈表循環(huán)鏈表雙鏈表靜態(tài)鏈表線性表的基本功能:構(gòu)造:使用頭插法、尾插法兩種方法插入:要求建立的鏈表按照關(guān)鍵字從小到大有序刪除查找獲取鏈表長度銷毀其他:可自行定義編寫測試main()函數(shù)測試線性表的正確性。2.程序分析存儲結(jié)構(gòu)存儲結(jié)構(gòu):順序表關(guān)鍵算法分析頭插法示意圖:算法步驟:堆中建立新結(jié)點(diǎn)S->next指向front->nextfront->next指向sNode<T>*s=newNode<T>; s->data=a[i]; s->next=front->next; front->next=s;時間復(fù)雜度:O(n)尾插法算法步驟:堆中建立新結(jié)點(diǎn)Node<T>*s=newNode<T>;將新結(jié)點(diǎn)加入到鏈表中r->next=front->next修改尾指針r=s按值查找結(jié)點(diǎn)示意圖:eq\o\ac(○,1)定位計數(shù)和定位指針inti=1; Node<T>*p; p=front->next;eq\o\ac(○,2)比較P指向的元素是否與檢索值相同 if(p) while(p) { if(p->data==n) cout<<"元素序號:"<<i<<endl; p=p->next; i++; } else throw"空鏈表!";時間復(fù)雜度:O(n)插入操作:算法步驟:堆中建立新結(jié)點(diǎn)Node<T>*s=newNode<T>;將新結(jié)點(diǎn)插入到要插入位置后一節(jié)點(diǎn)p的后面,將后一結(jié)點(diǎn)數(shù)據(jù)寫入sP指向s,在p中寫入新的值s->data=p->data; s->next=p->next;p->next=s; p->data=x;時間復(fù)雜度:O(1)刪除結(jié)點(diǎn)示意圖:刪除結(jié)點(diǎn)示意圖算法步驟:①從第一個結(jié)點(diǎn)開始,查找第i-1個元素,設(shè)為p指向該結(jié)點(diǎn);②設(shè)q指向第i個元素:q=p->next;③摘鏈,即將q元素從鏈表中摘除:p->next=q->next;④保存q元素的數(shù)據(jù):x=q->data;⑤釋放q元素:deleteq;說明:如果算法比較復(fù)雜,可以將多句代碼合成一個步驟進(jìn)行說明。比如也可以這樣寫:①從第一個結(jié)點(diǎn)開始,查找第i-1個元素,設(shè)為p指向該結(jié)點(diǎn);②設(shè)q指向第i個元素:q=p->next;③摘鏈,即將q元素從鏈表中摘除:p->next=q->next;x=q->datadeleteq;時間復(fù)雜度:O(n)其他程序代碼:#include<iostream>usingnamespacestd;template<classT>structNode{ Tdata; structNode<T>*next;};template<classT>classLinkList{public: LinkList(){front=newNode<T>;front->next=NULL;} LinkList(Ta[],intn); ~LinkList(); Node<T>*Get(inti); Node<T>*Locate(intn,Node<T>*s); voidInsert(inti,Tx); TDelete(inti); intGetLength(); voidPrint();private: Node<T>*front;};template<classT>LinkList<T>::LinkList(Ta[],intn)程序運(yùn)行結(jié)果測試主函數(shù)流程:流程圖如圖所示開始打印序列開始打印序列是否退出結(jié)束是輸入插入的位置和數(shù)值輸入插入的位置和數(shù)值打印修改后序列打印修改后序列輸入刪除的位置輸入刪除的位置打印修改后序列打印修改后序列輸入查找的關(guān)鍵值輸入查找的關(guān)鍵值打印查找關(guān)鍵值打印查找關(guān)鍵值的位置測試條件:初始序列為123456插入位置1數(shù)值6是刪除元素序號3查找元素序號2查找元素6測試結(jié)論初始序列為123456插入位置1數(shù)值6后序列:6123456是刪除元素序號3后序列:613456查找元素序號2后查找到序號2所對應(yīng)元素為:1查找元素6查找到所對應(yīng)元素序號為1和64.總結(jié)本次實(shí)驗(yàn)我掌握了線性表的操作的實(shí)現(xiàn)方法,實(shí)現(xiàn)了線

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論