版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
信息與管理科學(xué)學(xué)院計(jì)算機(jī)科學(xué)系實(shí)驗(yàn)報(bào)告課程名稱:《數(shù)據(jù)結(jié)構(gòu)與算法》班級:姓名:學(xué)號指導(dǎo)老師:上機(jī)實(shí)驗(yàn)內(nèi)容規(guī)范一、實(shí)驗(yàn)?zāi)康纳蠙C(jī)實(shí)驗(yàn)是數(shù)據(jù)結(jié)構(gòu)課程教學(xué)不可或缺的重要環(huán)節(jié)。上機(jī)實(shí)驗(yàn)是通過編寫解決簡單問題的程序,達(dá)到如下課程實(shí)驗(yàn)?zāi)康模海?)使學(xué)生進(jìn)一步理解和掌握課堂上所學(xué)各種基本抽象數(shù)據(jù)類型的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和操作實(shí)現(xiàn)算法。(2)使學(xué)生深入理解面向?qū)ο蟮母拍詈统绦蛟O(shè)計(jì)方法,掌握抽象數(shù)據(jù)類型和類的關(guān)系。(3)使學(xué)生掌握軟件設(shè)計(jì)的基本內(nèi)容和設(shè)計(jì)方法,并培養(yǎng)學(xué)生進(jìn)行規(guī)范化軟件設(shè)計(jì)的能力。(4)能夠運(yùn)用所學(xué)原理和方法解決實(shí)際問題,設(shè)計(jì)相應(yīng)數(shù)據(jù)結(jié)構(gòu)以及解決實(shí)際問題的算法,運(yùn)用高級語言實(shí)現(xiàn)性能優(yōu)、效率高、可讀性強(qiáng)、易維護(hù)的程序,并提高探索研究問題的能力。二、實(shí)驗(yàn)環(huán)境1人/I機(jī),windows7及以上操作系統(tǒng),VC++6.0以上版本(JDK1.6以上版本,Eclipse4.3以上版本)三、實(shí)驗(yàn)內(nèi)容為達(dá)到嚴(yán)格訓(xùn)練的目的,要求上機(jī)實(shí)驗(yàn)完成后書寫上機(jī)實(shí)驗(yàn)報(bào)告。上機(jī)實(shí)驗(yàn)報(bào)告應(yīng)包括如下8部分內(nèi)容。問題描述:描述要求編程解決的問題。基本要求:給出程序要達(dá)到的具體要求。測試數(shù)據(jù):設(shè)計(jì)測試數(shù)據(jù),要求測試數(shù)據(jù)能基本達(dá)到測試目的。算法思想:描述解決相應(yīng)問題的算法思想。類劃分:分析問題所需的類,并給出類的邏輯功能描述。源程序:給出所有源程序清單,要求程序有充分的注釋語句。測試情況:給出程序的測試情況以及必要的說明。心得體會:實(shí)驗(yàn)過程結(jié)束后的收獲。在以上8個部分中,問題描述和基本要求部分通常由教師作為上機(jī)實(shí)驗(yàn)題目給出;有時(shí)測試數(shù)據(jù)部分也由教師給出,若教師沒有給出此部分,則要求學(xué)生自己設(shè)計(jì)測試數(shù)據(jù);其余算法思想、類劃分、源程序和測試情況部分是學(xué)生上機(jī)實(shí)驗(yàn)的主體部分;心得體會是學(xué)生思考擴(kuò)展的體現(xiàn)部分。8.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.}Node節(jié)點(diǎn)類packagetree;2./***@authorwyt*@create2021-12-1410:32*/7.publicclassNode<T>{privateTdata;publicNode<T>lChild;publicNode<T>rChild;publicNode(){data=null;lChild=null;rChild=null;}publicNode(Telem){data=elem;lChild=null;rChild=null;}publicTgetData(){returndata;}publicvoidsetData(Ty){data=y;}BinaryTree類packagetree;2./***@authorwyt*@create2021-12-1410:33*/7.publicclassBinaryTree<T>{
publicNode<T>root;8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.privatefinalintmaxNodes=100;publicBinaryTree(){this.root=newNode<T>();}publicBinaryTree(Tx){this.root=newNode<T>(x);}publicbooleaninsertLeft(Tx,Node<T>parent){if(parent==null)returnfalse;Node<T>p=newNode<T>(x);if(parent.lChild==null)parent.lChild=p;else{p.lChild=parent.lChild;parent.lChild=p;}returntrue;}publicbooleaninsertRight(Tx,Node<T>parent){if(parent==null)returnfalse;Node<T>p=newNode<T>(x);if(parent.rChild==null)parent.rChild=p;else{p.rChild=parent.rChild;parent.rChild=p;}returntrue;}publicbooleandeleteLeft(Node<T>parent){if(parent==null)returnfalse;else{parent.lChild=null;returntrue;}}}}publicbooleandeleteRight(Node<T>parent){if(parent==null)returnfalse;else{parent.rChild=null;returntrue;}}publicvoidyezi(Node<T>node){if(node==null)return;else{if(node.lChild==null&&node.rChild==null){System.out.print("\n葉子節(jié)點(diǎn):"+node.getData());}else{yezi(node.lChild);yezi(node.rChild);}}}publicintcount(Node<T>node){intlc,rc,sum;if(node!=null){lc=count(node.lChild);rc=count(node.rChild);sum=lc+rc;return(sum+1);}elsereturn0;}publicNode<T>search(Node<T>node,Tx){if(node==null)returnnull;52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.else{}}96.96.97.98.99.100.101.102.103.104.105.106.107.108.109.110.111.112.113.114.x)){115.116.117.x)){118.119.120.121.122.123.124.125.126.127.128.129.130.131.132.133.134.135.136.137.if((node.getData()).equals(x)){returnnode;}else{Node<T>s=search(node.lChild,x);if(s!=null)returns;elsereturnsearch(node.rChild,x);}}}publicNode<T>search2(Node<T>node,Tx){if(node==null)returnnull;else{if(node.lChild!=null&&(node.lChild.getData()).equals(returnnode;}if(node.rChild!=null&&(node.rChild.getData()).equals(returnnode;}Node<T>s=search2(node.lChild,x);if(s!=null)returns;elsereturnsearch2(node.rChild,x);}}publicbooleaninsertl(Node<T>a,Node<T>parent){if(parent==null)returnfalse;if(parent.lChild==null)parent.lChild=a;else{insertl(a,parent.lChild);}returntrue;138.138.139.140.141.142.143.144.145.146.147.148.149.150.151.152.153.154.155.156.157.158.159.160.161.162.163.164.165.166.167.168.169.170.171.172.173.174.175.176.177.178.179.180.181.publicbooleaninsertr(Node<T>a,Node<T>parent){if(parent==null)returnfalse;if(parent.rChild==null)parent.rChild=a;else{insertr(a,parent.rChild);}returntrue;}publicvoidsuojing(Node<T>node,inti){if(node==null)return;else{for(intj=0;j<i;j++){System.out.print("-");}System.out.println(node.getData());suojing(node.lChild,++i);--i;suojing(node.rChild,++i);--i;}}publicvoidinorder(Node<T>node){if(node==null)return;else{inorder(node.lChild);System.out.print(node.getData());inorder(node.rChild);}}publicvoidpreorder(Node<T>node){if(node==null)return;else{System.out.print(node.getData());182.183.184.185.186.187.188.189.190.191.192.193.194.195.196.197.198.199.200.201.202.203.204.205.206.207.208.209.210.211.212.213.214.215.216.217.218.219.220.221.222.223.224.225.preorder(node.lChild);preorder(node.rChild);}}publicvoidpostorder(Node<T>node){if(node==null)return;else{postorder(node.lChild);postorder(node.rChild);System.out.print(node.getData());}}publicvoidlevelorder(){Node<T>[]queue=newNode[this.maxNodes];intfront,rear;if(this.root==null)return;front=-1;rear=0;queue[rear]=this.root;while(front!=rear){front++;System.out.print(queue[front].getData());if(queue[front].lChild!=null){rear++;queue[rear]=queue[front].lChild;}if(queue[front].rChild!=null){rear++;queue[rear]=queue[front].rChild;}}}publicvoidtraversal(inti){switch(i){28.29.30.31.32.#.35.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.node2.setData(temp);System.out.print("節(jié)點(diǎn)3和節(jié)點(diǎn)7交換后:");tree.traversal(0);System.out.println("(先序遍歷)");//5.將現(xiàn)有二叉樹的某個子樹a移到其他子樹b中Node<Integer>a=tree.search(tree.root,2);Node<Integer>b=tree.search(tree.root,3);//5.1查找a的雙親Node<Integer>parentofa=tree.search2(tree.root,a.getData());//System.out.println("a的雙親是:"+parentOfa.getData());System.out.println("a的雙親:"+parentOfa.getData());System.out.println();//插入操作將a插到b中tree.insertl(a,b);//將子樹a置空if(parentOfa.lChild!=null&&parentOfa.lChild.getData().equals(a.getData()))parentOfa.lChild=null;elseif(parentOfa.rChild!=null&&parentOfa.rChild.getData().equals(a.getData()))parentOfa.rChild=null;//遍歷一下,檢驗(yàn)是否正確System.out.println("將a移到b以后:");tree.traversal(0);System.out.println("(先序)");tree.traversal(1);System.out.println("(中序)");//6.刪除一個節(jié)點(diǎn)//找到這個節(jié)點(diǎn)Node<Integer>delete=tree.search(tree.root,3);〃找到這個節(jié)點(diǎn)的雙親節(jié)點(diǎn)Node<Integer>parentOfdelete=tree.search2(tree.root,delete.getData());if(parentOfdelete.lChild!=null&&parentOfdelete.lChild.getData().equals(delete.getData()))parentOfdelete.lChild=null;100.101.102.100.101.102.}100.101.102.100.101.102.}74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.elseif(parentOfdelete.rChild!=null&&parentOfdelete.rChild.getData().equals(delete.getData()))parentofdelete.rChild=null;//找到節(jié)點(diǎn)的左孩子和右孩子Node<Integer>left=delete.lChild;Node<Integer>right=delete.rChild;//插入操作if(left!=null){tree.insertl(left,parentofdelete);}if(right!=null){tree.insertr(right,parentOfdelete);}//遍歷一下,檢驗(yàn)是否正確System.out.println("刪除節(jié)點(diǎn)以后:");tree.traversal(0);System.out.println("(先序)");tree.traversal(1);System.out.println("(中序)”);//7.縮進(jìn)結(jié)構(gòu)打印System.out.println("縮進(jìn)結(jié)構(gòu)打印:");tree.suojing(tree.root,0);}測試結(jié)果原始一叉樹:043218765二叉樹的所有葉子節(jié)點(diǎn):葉子節(jié)點(diǎn):1葉子節(jié)點(diǎn):5節(jié)點(diǎn)的數(shù)量為:9節(jié)點(diǎn)3和節(jié)點(diǎn)7交換后:047218365(先序遍歷)且的雙親:7將日移至%以后:047832165(先序)740812365(中序)刪除節(jié)點(diǎn)以后:04782165(先序)74012865(中序)縮進(jìn)結(jié)構(gòu)打?。?4—7-8—2——1—6——5[心得體會]遍歷是對樹的一種最基本的運(yùn)算,所謂遍歷二叉樹,就是按一定的規(guī)則和順序走遍二叉樹的所有結(jié)點(diǎn),使每一個結(jié)點(diǎn)都被訪問一次,而且只被訪問一次。由于二叉樹是非線性結(jié)構(gòu),因此,樹的遍歷實(shí)質(zhì)上是將二叉樹的各個結(jié)點(diǎn)轉(zhuǎn)換成為一個線性序列來表示。最初,看到這次的作業(yè)時(shí),我覺得難度應(yīng)該不大,因?yàn)槲乙矊W(xué)了相關(guān)的知識。實(shí)際行動起來才發(fā)現(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 晉中師范高等??茖W(xué)?!锻ㄐ烹娮泳€路》2023-2024學(xué)年第一學(xué)期期末試卷
- 鶴壁職業(yè)技術(shù)學(xué)院《房地產(chǎn)營銷策劃實(shí)務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶三峽學(xué)院《項(xiàng)目開發(fā)》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶財(cái)經(jīng)學(xué)院《語文教學(xué)與文本解讀》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江工業(yè)職業(yè)技術(shù)學(xué)院《會計(jì)學(xué)原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 國家一級保護(hù)植物水杉的故事
- 中國傳媒大學(xué)《英語創(chuàng)新創(chuàng)業(yè)教育》2023-2024學(xué)年第一學(xué)期期末試卷
- 長治幼兒師范高等專科學(xué)?!端|(zhì)程學(xué)實(shí)驗(yàn)課》2023-2024學(xué)年第一學(xué)期期末試卷
- 企業(yè)能源管理系統(tǒng)節(jié)能減排計(jì)劃
- 數(shù)據(jù)結(jié)構(gòu)講解模板
- 小學(xué)二年級100以內(nèi)進(jìn)退位加減法800道題
- 2025年1月普通高等學(xué)校招生全國統(tǒng)一考試適應(yīng)性測試(八省聯(lián)考)語文試題
- 《立式輥磨機(jī)用陶瓷金屬復(fù)合磨輥輥套及磨盤襯板》編制說明
- 保險(xiǎn)公司2025年工作總結(jié)與2025年工作計(jì)劃
- 育肥牛購銷合同范例
- 暨南大學(xué)珠海校區(qū)財(cái)務(wù)辦招考財(cái)務(wù)工作人員管理單位遴選500模擬題附帶答案詳解
- (精心整理)高中生物必修二非選擇題專題訓(xùn)練
- 小學(xué)二年級100以內(nèi)進(jìn)退位加減法混合運(yùn)算
- 福建省流動人口信息登記表
- 市委組織部副部長任職表態(tài)發(fā)言
- HXD1D客運(yùn)電力機(jī)車轉(zhuǎn)向架培訓(xùn)教材
評論
0/150
提交評論