Java单向链表操作详解
生活随笔
收集整理的這篇文章主要介紹了
Java单向链表操作详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/* 先定義一個Node類用來存儲節點的值域和指針域* 即當前節點中的值和后面節點的方法* 在C中就是相當與定義一個結構體類型一個數據域和指針域的方法*/
class LNode{//這個寫法已經非常固定了 設置兩個屬性分別用set函數和get函數來得到這兩個屬性private int data;private LNode next;//這個和String應該比較相似的用法,類名用來表示數據類型,表示next的數據類型也是節點public void setData(int data){this.data = data;}public int getData(){return this.data ;}public void setNext(LNode next){this.next = next;}public LNode getNext(){return this.next;}
}
/** 定義一個鏈表主類,并且定義各種對鏈表操作的方法*/
public class Linklist {public LNode head;//定義一個頭結點/** 定義一個創建鏈表的方法* 該方法稱之為 :尾插法:新產生的節點從尾部插入鏈表*/public void createlink(int [] a){LNode pnew;//定義pnew表示新產生的結點LNode ptail=new LNode();//為尾節點分配堆內存head=ptail;//初始時是頭結點與尾節點相等for(int i=0;i<a.length;i++){pnew=new LNode();//為新產生的節點分配堆內存pnew.setData(a[i]);//傳遞data值ptail.setNext(pnew);//把新產生的節點設置為ptail的后繼節點pnew.setNext(null);//把新產生的節點的后繼節點設為空ptail=pnew;//移動 ptail節點的位置使之一直指向尾部}}/** 定義判斷鏈表中元素是否存在的方法*/public void seachlink(int value){LNode ptr;ptr=head.getNext();while(ptr!=null){//在節點非空的情況下尋找匹配的的值if(value==ptr.getData()){//匹配成功是System.out.println("找到數據:"+ptr.getData());break;//退出循環}else{//當當前值不是要查找的值時,查找下一個ptr=ptr.getNext();} }if(ptr==null)//鏈表遍歷完畢,沒有找到時System.out.println("鏈表中沒有要查找數據");}
/** 定義一個刪除節點的方法*/public void deletelink(int value){LNode ptr;LNode p;p=head;ptr=head.getNext();while(ptr!=null){if(value==ptr.getData()){//判斷鏈表中的當前值是否是要刪除的節點p.setNext(ptr.getNext());//把ptr的后繼節點設置為p的后繼節點,即在形式上在鏈表中刪除了ptr節點// System.gc();System.out.println("刪除數據"+value+"成功!");break;}else{p=ptr;//p指向ptr位置ptr=ptr.getNext();//ptr指向其直接后繼位置}}if(ptr==null)System.out.println("鏈表中沒有要刪除的數據!");}
/** 定義插入節點的方法*/public void insertlink(int pos,int value){//兩個參數,一個表示插入的位置,另一個表示插入的值LNode ptr;LNode pnew;//實例化新節點ptr=head.getNext();while(ptr!=null){if(pos==ptr.getData()){pnew=new LNode();pnew.setData(value);pnew.setNext(ptr.getNext());ptr.setNext(pnew);//System.out.println("插入數據"+value+"成功!");break;}else{ptr=ptr.getNext();}}if(ptr==null)System.out.println("插入數據失敗!");}/** 定義一個輸出鏈表內容方法*/public void printlink(){LNode ptr;//實例化一個節點ptr=head.getNext();//該節點取得頭結點的后繼節點while(ptr!=null){System.out.print(ptr.getData()+"->");ptr=ptr.getNext();}System.out.println(" NULL");}/** 下面給出一個測試用例,用數組創建一個整型的鏈表,并且把它輸出 */public static void main(String args[]){int a[]=new int [10];for(int i=0;i<a.length;i++){a[i]=i;}Linklist list=new Linklist();list.createlink(a);System.out.println(" 鏈表輸出如下:");list.printlink();System.out.println(" 插入元素后鏈表的輸出如下:");list.printlink();}
}
總結
以上是生活随笔為你收集整理的Java单向链表操作详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java实现双向链表
- 下一篇: 传智播客韩顺平老师2011ssh实战项目