Ceci est pour les devoirs, mais sachez que j'ai regardé en ligne pour obtenir de l'aide (comme http://www.sethi.org/classes/class_stuff/cis435/others/notes-java/data/collections/lists/simple-linked-list.html) et mon manuel mais j'ai encore quelques problèmes.Aide à faire une liste de liens simples en Java
Toute aide serait appréciée ...
En ce moment je suis en train d'insérer juste valeurs, mais rien ne fonctionne. Que ce soit le premier élément, qu'il soit ajouté en dernier ou entre les deux.
Node header = null; // First element of list.
Node back = null; // Last element of list.
public void insert(int i, double value){ //insert value before i-th element
Node e = new Node();
e.num = value;
Node curr = header;
for(int x=0;x<i;x++) {
if (i == 1) { //we want to insert as first thing
if (size == 0) { //its the FIRST time we add something
header.next = e;
e.next = back;
break;
} else if (size == 1){
e.next = header.next; //i.e. the second thing in the list
header.next = e;
break;
} else {
e.next = header.next.next; //i.e. the second thing in the list
header.next = e;
break;
}
}
else if (x == (i-1)) {
e.next = curr.next;
curr.next = e;
break;
}
curr = curr.next;
}
size = size+1;
}
Je ne sais pas vraiment pourquoi cela ne fonctionne pas.
Merci!
Défini "ne fonctionne pas" – wheaties
C'est trop de code pour un 'insert at i'. Deux choses: 1) Construire le nœud comme si vous le pouvez: 'Noeud noeud = nouveau noeud (val);', 2) Rendre la logique plus simple. Décomposer en: A) Trouver le noeud après lequel insérer, ou lancer une exception/retour nul (quelle que soit la convention), B) Effectuer une insertion (Cela devrait être une méthode de la classe de noeud elle-même, en fait. devrait partager les responsabilités entre les classes 'Node' et 'LinkedList'). En passant, les noms standards pour le LL devraient être "head" et "tail" et non "header" et "back". Pensez serpent, pas Excel. Qu'est-ce qu'un enfer? –
@Harnish - super commentaire. +1 juste pour "Ceci est trop de code pour un insert à i". Spot sur. – duffymo