【數據結構】Java語言描述-單鏈表的基本操做

單鏈表是數據結構中以動態結構存儲的線性結構,在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;
}
相關文章
相關標籤/搜索