-1
這裏是我的代碼添加一個節點到雙向鏈表的前面。插入一個雙向鏈表
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。
使用item a的節點會發生什麼?對於我的toString方法,它是不是打印出來的問題,還是insertFront()的問題。
我不能看到我想提出一個mistake.So任何幫助糾正,這將是很有益的
更正it.Though我想插入頭部之前,我將在頭節點和下一個節點的中間。爲什麼a沒有打印是因爲'head = v;'這一行。我指着新節點成爲頭,並且正在從list.orrected insertFront刪除節點a的節點在頭部插入的是:'public void insertFront(Object e){ \t \t if(isEmpty()){ \t \t \t head = new DListNode(e,null,head); \t \t} \t \t否則如果(頭==尾){ \t \t \t頭=新DListNode(E,空,頭); \t \t} \t \t否則{ \t \t \t頭=新DListNode(E,頭,NULL); \t \t \t \t \t \t} \t}' –