将节点插入双向链表的中间

时间:2014-05-13 06:25:59

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

我想在一个双向链接列表的中间插入一个Node。这是我的实现 我的默认参数是待插入节点之前的节点。

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);  
    }
}  

public void insertAfter(Object e,DListNode firstNode) throws UnderFlow{
        if(isEmpty()||(head==tail))
            throw new UnderFlow("need at least two nodes");
        else{
            DListNode v=firstNode.next;
            DListNode k=new DListNode(e,v,firstNode);
            firstNode =k;
            v.prev=k;
        }
    }

 public static void main (String args[]) throws UnderFlow{
        DList d=new DList();

         d.insertFront("d");
         d.insertFront("b");

        d.insertAfter("c",d.head);

        System.out.println(d.toString());

    }  

虽然我看不出我犯了哪个错误但它只打印出b,d。
c未插入中间。
请有人指出我犯错的地方

1 个答案:

答案 0 :(得分:1)

我建议您使用具有某种含义的变量名称。您的kv等名称很难理解

而不是firstNode =k;应该是firstNode.next =k;,但最好用专有名称重写。喜欢这个

DListNode next=firstNode.next;
DListNode newOne=new DListNode(e,next,firstNode);
firstNode.next =newOne;
next.prev=newOne;