單鏈表是數據結構中以動態結構存儲的線性結構,在Java語言中,通常用本類對象引用的方式在內存中將一組相同類型的對象存儲,熟悉單鏈表的基本操做有助於靈活解決此類算法問題。node
1.單鏈表中的節點能夠用節點類型描述以下:算法
public class Lnode{ public char data; public Lnode next; }
2.單鏈表能夠按以下的類進行封裝:數據結構
public class LinkedList{ Lnode h = null; public LinkedList(){...} public insertElement(char ch,int i){...} //...省略方法 }
3.頭插法創建單鏈表code
public LinkedList(String str){ h = new Lnode; h.next = null; int i = 0; Lnode p; char ch; while(i<str.length()){ ch = str.charAt(i); p = new Lnode(); p.data = ch; p.next = h.next; h.next = p; i++; } }
4.尾插法創建單鏈表對象
public LinkedList(String str){ h = new Lnode(); h.next = null; char ch; Lnode p; Lnode t = h; int i = 0; while(i<str.length()){ ch = str.charAt(i); p = new Lnode; p.data = ch; p.next = null; t.next = p; t = p; i++; } }
5.求單鏈表的長度內存
public int size(){ int i = 0; Lnode p = h.next; while(p!=null){ i++; p = p.next; } return i; }
6.1 在單鏈表某節點以後插入新節點rem
public void insertElementAfter(Lnode p,char ch){ Lnode s = new Lnode(); s.data = ch; s.next = p.next; p.next = s; }
6.2 在單鏈表第i個元素以前插入一個元素get
public int insertElementAt(int i,char ch){ Lnode p; int k = 0; p = h.next; while(p!=null&&k<i-1){ p = p.next; k++; } if(p!=null){ Lnode s = new Lnode(); s.data = ch; s.next = p.next; p.next = s; return 1; } return 0; }
7.刪除單鏈表中某節點的後繼節點class
public void remove(Lnode p){ if(p.next!=null){ Lnode s = p.next; p.next = s.next; s = null; } }
8.1 按值查找List
public Lnode search(char ch){ Lnode p = h.next; while(p!=null&&p.data!=ch){ p = p.next; } return p; }
8.2 按位置查找
public Lnode get(int i){ Lnode p = h.next; int k = 0; while(p!=null&&k<i){ p = p.next; k++; } if(i==k) return p; else return null; }