插入双向链表前面

时间:2014-05-13 04:49:57

标签: java data-structures doubly-linked-list

这是我将代码添加到双向链接列表前面的代码。

public void insertFront(Object e){
        if(isEmpty()){
            head=new DListNode(e,null,head);
        }
        else if(head==tail){
            head=new DListNode(e,null,head);
        }
        else{
            DListNode tmp=head.next;
            DListNode v=new DListNode(e,head.next,head);
            head=v;
            tmp.prev=v;
            }
    }


public void addToTail(Object e){
    if(!isEmpty()){
        tail=new DListNode(e,null,tail);
        tail.prev.next=tail;
    }   
    else
        head=tail=new DListNode(e);
}
public String toString(){
    DListNode a=head;
    String result=" ";
    if(!isEmpty()){
        while(a.next!=null){
            result+=" " +a.item;
            a=a.next;}
        result+=" "+a.item;
    }

    return result;
}
public static void main (String args[]) throws UnderFlow{
    DList d=new DList();
    d.addToTail("a");
    d.addToTail("b");
    d.insertFront("c");
    System.out.println(d.toString());

}    

这是我的DListNode类:

public class DListNode{
    public DListNode prev,next;
    public Object item;
    public DListNode(Object i,DListNode n,DListNode p){
        prev=p;
        next=n;
        item=i;     
    }
    public DListNode(Object i){
        this(i,null,null);  
    }
}

我的问题是在插入前面后打印出来的是c,b不是c,a,b。
具有项目a的节点会发生什么?我的toString方法是否存在问题,它无法打印出来或者是insertFront()的问题。
我无法看到我在哪里犯了错误。任何帮助纠正这一点都会非常有帮助

1 个答案:

答案 0 :(得分:-1)

试试这个

DListNode tmp=head.next;
DListNode v=new DListNode(e,head.next,head);
head=v;
head.next = tmp;