欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

带头节点的双链表及其基本操作(Java实现)

程序员文章站 2022-03-16 08:53:25
...
package lwh.linearlist.linklist;

public class DbNode {

    protected int e;
    protected DbNode next;
    protected DbNode previous;

    public DbNode(){}

    public DbNode(int e){
        this.e = e;
    }

    public int getE() {
        return e;
    }
    public void setE(int e) {
        this.e = e;
    }
    public DbNode getNext() {
        return next;
    }
    public void setNext(DbNode next) {
        this.next = next;
    }
    public DbNode getPrevious() {
        return previous;
    }
    public void setPrevious(DbNode previous) {
        this.previous = previous;
    }
}
package lwh.linearlist.linklist;

//带头节点的双链表
public class DbLinkedList {

    private DbNode head;

    public DbLinkedList(){
        head = new DbNode();
        head.next = null;
        head.previous = null;
    }

    //在头节点后面插入节点
    public void insertHead(int num){
        DbNode node = new DbNode(num);
        DbNode p = head.next;
        if(p != null){
            node.next = p;
            p.previous = node;
            node.previous = head;
            head.next = node;
        }else{
            head.next = node;
            node.previous = head;
        }
    }

    //求表长,不包括表头节点
    public int length(){
        int len = 0;
        DbNode p = head.next;
        while(p != null){
            len++;
            p = p.next;
        }
        return len;
    }

    //删除i处的节点
    public boolean delete(int i){
        if(i < 1 || i > length()){
            System.out.println("Delete index wrong");
            return false;
        }
        DbNode q = head.next;
        int j = 1;
        while(j < i){
            q = q.next;
            j++;
        }
        DbNode r = q.next;
        DbNode p = q.previous;
        if(r != null){
            p.next = r;
            r.previous = p;
            q = null;
        }else{
            p.next = null;
            q = null;
        }
        return true;
    }

    public void print() {
        if(head.next == null){
            System.out.println("No num");
            return;
        }
        System.out.print("[");
        for(DbNode node = head.next; node != null; node = node.next){
            if(node.next != null)
                System.out.print(node.e + ",");
            else
                System.out.print(node.e + "]");
        }
        System.out.println();
    }
}
相关标签: java 链表