这是我将代码添加到双向链接列表前面的代码。
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()的问题。
我无法看到我在哪里犯了错误。任何帮助纠正这一点都会非常有帮助
答案 0 :(得分:-1)
试试这个
DListNode tmp=head.next;
DListNode v=new DListNode(e,head.next,head);
head=v;
head.next = tmp;