


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單鏈表的操作方法一:package ch02;(1)建立結(jié)點類Node.javapublic class Node public Object data ; /存放結(jié)點數(shù)據(jù)值public Node next ; /存放后繼結(jié)點/無參構(gòu)造函數(shù)public Node()this (null , null );/只有結(jié)點值的構(gòu)造函數(shù)public Node(Object data)this (data, null );/帶有節(jié)點值和后繼結(jié)點的構(gòu)造函數(shù)public Node(Object data,Node next)this . data =data;this . next =next;(2)建立鏈表
2、及操作LinkList.javapackage ch02;import java.util.Scanner;public class LinkListimplements IListpublic Node head; /單鏈表的頭指針/構(gòu)造函數(shù)初始化頭結(jié)點public Lin kList()head二 new Node();/構(gòu)造函數(shù)構(gòu)造長度為n的單鏈表publicLin kList(int n, boolean Order) throws Exceptionthis ();if (Order)create1( n);/頭插法順序建立單鏈表elsecreate2( n);/尾插法逆序建立單鏈表
3、/頭插法順序建立單鏈表public void create1( int n) throws ExceptionScanner sc= new Scanner(System. in );System. out .println(”請輸入結(jié)點的數(shù)據(jù)(頭插法):”);for (int i=0;i<n;i+)in sert(0,sc. next();/尾插法逆序建立單鏈表public void create2( int n) throws ExceptionScanner sc= new Scanner(System. in );System. out .println( ”請輸入結(jié)點的數(shù)據(jù)(尾
4、插法):”); for (int i=0;i<n;i+)in sert(le ngth(),sc. next();/將鏈表置空public void clear()head. data = null ;head. next =null ;/判斷鏈表是否為空public boolean isEmpty()return head. next =null ;/返回鏈表長度public int length()Node p= head. next ;int length=0;while (p!= null ) p=p. n ext ;length+; /返回P不空長度length加1return
5、 len gth;/讀取并返回第i個位置的數(shù)據(jù)元素public Object get( int i) throws Exception Node p= head. next ;int j;/從首結(jié)點開始向后查找,直到p指向第i個結(jié)點或者p為nullfor (j=0;j<i&&p!=null ;j+)p=p. next ;if (j>i|p= null )/i不合法時拋出異常throw new Exception( ”第"+i+ "個數(shù)據(jù)元素不存在”); return p. data ;/插入x作為第i個元素public void insert(i
6、nt i, Object x) throws ExceptionNode p= head;int j=-1;/尋找第i個結(jié)點的前驅(qū)i-1 while (p!= null &&j<i-1)p=p. n ext ;J+;if (J>i-1|p= null )/i不合法時拋出異常throw new Exception(”插入位置不合法")Node s= new Node(x);s. next =p. next ;p. next =s;/刪除第i個元素public void remove( int i)throws ExceptionNode p= head;in
7、t J=-1;while (p!= null &&J<i-1) p=p. next ;J+;/尋找第i-1個節(jié)點if (j>i-1|p. next =null )throw new Excepti on("刪除位置不合法");p. next =p. next . next ;/返回兀素x首次出現(xiàn)的位序號public int indexOf(Object x) Node p= head. next ;int j=0;while (p!= null &&!p. data .equals(x) p=p. n ext ;j+;if (p!
8、= null )return j;elsereturn -1;public void display()Node p= head. next ;while (p!= null )if (p. next =null )System. out .print(p.data );elseSystem. out .print(p. data +" p=p. next ;(3)建立測試類Test.javappublic class test throws Exception public static void main(String args)/ TODOAuto-ge nerated met
9、hod stubScanner sc= new Scanner(System.in );boolean or;int xz,xx;System. out .println(”請選擇插入的方法:0、頭插法,1、尾插法");xz=sc .n ext In t();if (xz!=0)or= true ;elseor= false ;System. out .println(”請插入的結(jié)點的個數(shù):");xx=sc .n ext In t();Lin kList L=new Lin kList(xx,or);System. out .println("建立的鏈表為:&qu
10、ot;);L.display();System. out .println();System. out .println("鏈表的長度:"+L.le ngth();System. out .println("請輸入查找的結(jié)點的數(shù)據(jù):");Object x=sc .n ext();int position二L.indexOf(x);System. out .println(”結(jié)點的數(shù)據(jù)為:"+x+"的位置為:"+position);System. out .println(”請輸入刪除的結(jié)點的位置:”);int sr=sc .
11、n ext In t();L.remove(sr);L.display();System. out .println();System. out .println(” 鏈表的長度:"+L.length();££ Problems JavadocQ Declaration §5 Error Log EJ Consoltterminated>test (3Java Application C:U5ertAdministr3torAppDat3Local詣選擇插入的方法;0.頭插法,1.屋插法0請插入的箔點的個數(shù):6語輸入結(jié)點的數(shù)據(jù)(屋插法;A B C
12、E D F建立的旌表為:IS表的長度:6請輸入查找的結(jié)點的數(shù)據(jù):E結(jié)點的數(shù)據(jù)為:E的位羞為:3請輸入刪除的結(jié)點的位置:應壬匸泄表的長廈:5方法二(引入get和set方法)Package sy;import java.util.Sca nner;/單鏈表的結(jié)點類public class Node private Object data; / 存放結(jié)點值 private Node next; /后繼結(jié)點的引用 public Node() /無參數(shù)時的構(gòu)造函數(shù) this( nu II, null);public Node(Object data) / 構(gòu)造值為 data 的結(jié)點 this(data,
13、 nu II);public Node(Object data, Node next) /構(gòu)造值為 data 和 next 的結(jié)點構(gòu)造函數(shù) this.data = data; this .next = n ext;public Object getData() return data;public void setData(Object data) this.data = data;public Node getNext() return n ext;public void setNext(Node n ext) this .n ext = n ext;/實現(xiàn)鏈表的基本操作類public cl
14、ass Lin kList Node head=new Node();/生成一個帶頭結(jié)點的空鏈表/根據(jù)輸入的一系列整數(shù),以0標志結(jié)束,用頭插法建立單鏈表public void creat() throws Excepti on Scanner sc = new Sca nn er(System.i n); /構(gòu)造用于輸入的對象for (i nt x=sc. next In t(); x!=0; x=sc. next In t() / 輸入若干個數(shù)據(jù)元素的值(以 0 結(jié)束) insert(0, x);/生成新結(jié)點,插入到表頭/返回帶頭結(jié)點的單鏈表中第i個結(jié)點的數(shù)據(jù)域的值。其中:0w i<
15、curLen-1public Object get(i nt i) throws Exceptio n Node p = head.getNext();/初始化,p指向首結(jié)點,j為計數(shù)器int j = 0;while (p != null && j < i) /從首結(jié)點開始向后查找,直到p指向第i個結(jié)點或p為空p = p.getNext();/指向后繼結(jié)點+j;計數(shù)器的值增1if (j > i | p = null) / i小于0或者大于表長減1 throw new Exception(”第” + i + "個元素不存在");/拋出異常retur
16、n p.getData(); /返回結(jié)點p的數(shù)據(jù)域的值/在帶頭結(jié)點的單鏈表中的第i個數(shù)據(jù)元素之前插入一個值為x的元素public void in sert(i nt i, Object x) throws Excepti on Node p = head;/初始化p為頭結(jié)點,j為計數(shù)器intj = -1;while (p != null && j < i - 1) / 尋找 i 個結(jié)點的前驅(qū)p = p.getNext();+j;/計數(shù)器的值增1if (j > i - 1 | p = null) / i 不合法throw new Exception(”插入位置不合理&
17、quot;);/輸出異常Node s = new Node(x); / 生成新結(jié)點s.setNext(p.getNext(); 插入單鏈表中p.setNext(s);/刪除帶頭結(jié)點的第i個數(shù)據(jù)元素。其中i取值圍為:0w i< length()- 1,如果i值不在 此圍則拋出異常public void remove(i nt i) throws Excepti on Node p = head;/初始化p為頭結(jié)點,j為計數(shù)器intj = -1;while (p.getNext() != null && j < i - 1) / 尋找 i 個結(jié)點的前驅(qū)p = p.get
18、Next();+j;/計數(shù)器的值增1if (j > i - 1 | p.getNext() = null) / i 小于 0 或者大于表長減 1 throw new Exception(”刪除位置不合理");/輸出異常p.setNext(p.getNext().getNext(); 刪除結(jié)點/輸出線性表中的數(shù)據(jù)元素public void display() 實用大全Node p = head.getNext();取出帶頭結(jié)點的單鏈表中的首結(jié)點元素 while (p != n ull) System.out.print(p.getData() + " ");/ 輸出數(shù)據(jù)元素的值p = p.getNext(); 取下一個結(jié)點System.out.println(); 換行/測試類public class SY 2_Li nkListpublic static voi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒水連鎖知識培訓課件
- 中班藝術(shù)領(lǐng)域教學方案2025年歸納
- 籃球技戰(zhàn)術(shù)課件
- 雙下肢血管炎護理查房
- 急性腎炎正確護理方法
- 護士長時間管理和目標管理
- 河北軟件職業(yè)技術(shù)學院《獸醫(yī)臨床病理學》2023-2024學年第二學期期末試卷
- 江蘇聯(lián)合職業(yè)技術(shù)學院《電子設計與創(chuàng)新基礎A》2023-2024學年第二學期期末試卷
- 上海震旦職業(yè)學院《BM概論》2023-2024學年第一學期期末試卷
- 2025屆山東省青島李滄區(qū)四校聯(lián)考初三第一次診斷性考試試題化學試題試卷含解析
- 辦公室平面圖模板
- 分包商資格申請表(全套)
- 三年級數(shù)學下冊蘇教版《解決問題的策略-從問題想起》教學反思(區(qū)級公開課)
- 計量經(jīng)濟學期末考試題庫(完整版)及答案
- 移動機器人機械臂的設計
- 加 工 貿(mào) 易 手 冊
- 高通量測序技術(shù)在微生物基因組學中的應用
- 復方地蒽酚軟膏(克顯龍)蒽林軟膏說明書副作用不良反應高低濃度的使用方法
- 浙江省建設工程施工取費定額(2003版)完整版
- 04_微生物農(nóng)藥
- AA7000系列原子吸收光譜儀基本操作手冊
評論
0/150
提交評論