8
votes

Liste de base liée à C

J'écris un programme de liste lié de base en C et ayant un peu de problème avec la suppression. Voici ce que j'ai: xxx

question n ° 1: J'ai donc essayé d'écrire: xxx

mais xcode voulait que je ajoute "&" devant "Node3". Est-il généralement vrai que lorsque je définis une fonction pour prendre un pointeur, je dois passer dans l'adresse mémoire?

question n ° 2:

My La fonction d'impression fonctionne pour imprimer les valeurs de 3 nœuds. Après avoir appelé Supprimer et essayer de supprimer Node3, il imprime toujours les 3 nœuds. Je ne suis pas sûr d'où je me suis trompé. Je trouve le nœud précédant celui que je veux supprimer et définir son prochain pointeur sur le nœud après le nœud après (informellement: nœud.next = nœud.next.next).

Toutes idées? >

merci pour l'aide, bclayman


1 commentaires

(1) Oui, Pointeur à quelque chose signifie que vous avez besoin de l'adresse de quelque chose. (2) Votre fonction Supprimer ne fait rien: actuel = actuel-> suivant-> suivant; ne modifie qu'une variable locale.


4 Réponses :


4
votes

Essayez simplement de changer actuel = actuel-> suivant-> suivant; à actuel-> suivant = actuel-> suivant-> suivant . Laissez-moi savoir si cela ne fonctionne pas.


0 commentaires

6
votes

Vous devez le transmettre & node3 . Pour supprimer, veuillez changer votre code de actuel = actuel-> suivant-> suivant; à actuel-> suivant = actuel-> suivant-> suivant;


0 commentaires

7
votes
current->next = current->next->next

0 commentaires

4
votes

est-il généralement vrai que lorsque je définis une fonction pour prendre un pointeur, j'ai besoin de passer l'adresse de la mémoire?

Oui, Xcode a raison. nœud3 est un noeud struct , mais votre fonction supprimer prend structure noeud * comme second paramètre, donc vous avez Pour transmettre le pointeur sur nœud3 , pas la variable elle-même.

Après avoir appelé supprimé et essayant de supprimer Node3, il imprime toujours les 3 nœuds.

il parce que vous ne modifiez pas la valeur de suivant . De plus, pour être en sécurité, n'oubliez pas de vérifier si le pointeur est null : xxx


0 commentaires