Voici mon code pour ajouter un nœud au début d'une liste doublement chaînée.Insertion au début d'une liste doublement chaînée
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());
}
Voilà ma classe 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);
}
}
Ma question est après l'insertion à l'avant ce qu'il imprime est c, b c pas, a, b.
Qu'arrive-t-il au noeud avec l'élément a? Est-ce un problème avec ma méthode toString qu'il ne s'imprime pas ou est-ce un problème avec insertFront().
Je ne vois pas où je fais un mistake.So toute aide à corriger ce serait vraiment utile
Correction it.Though Je voulais insérer avant la tête i insérait Au milieu du nœud de tête et le suivant. Pourquoi une impression n'était pas à cause de la ligne 'head = v;'. Je pointe le nouveau nœud vers la tête et supprimait le nœud avec l'élément a de la liste. insertFront corrigé les insertions en tête sont: public void insertFront (Object e) { \t \t if (isEmpty()) { \t \t \t head = nouveau DListNode (e, null, head); \t \t} \t \t else if (tête == queue) { \t \t \t tête = new DListNode (e, null, la tête); \t \t} \t \t else { \t \t \t tête = new DListNode (e, tête, null); \t \t \t \t \t \t}} ' \t –