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

来源:互联网 发布:nginx 查看模块 编辑:程序博客网 时间:2024/04/16 19:06
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();    }}
阅读全文
0 0
原创粉丝点击