Insérer un nœud à une certaine position dans une liste, C++
J'essaie d'insérer un nœud à une certaine position. Dans mon code, les nombres avec la position 1 est inséré (en gros, au début de la liste chaînée) et il n'est pas l'insertion de toutes les données à la position 2. Est-il quelque chose de mal avec temp2? Lorsque j'ai exécuté le programme, il ne pointe pas pour rien je pense.
Je sais combien vous les gars détestent les devoirs des problèmes posées ici, mais je ne sais pas quel est le problème avec mon programme. Je suis juste un débutant et que mon professeur n'a pas à l'expliquer liste liée.
Le code est ci-dessous.
-Le résultat que j'obtiens est 8 7
-Je lire de 8 6 7 5 6 et 5 sont insérés à la position 2
/*
Insert node at a given positon in a linked list.
First element in the linked list is at position 0
*/
#include<stdlib.h>
#include<stdio.h>
struct Node
{
int data;
struct Node* next;
};
struct Node *head;
void Insert(int data, int n)
{
Node* temp1 = new Node();
temp1->data = data;
temp1->next = NULL;
if (n == 1){
temp1->next = head;
head = temp1;
return;
}
Node* temp2 = new Node();
for (int i = 0; i < n-2; i++){//i feel like it doesn't even go through this loop
temp2 = temp2->next;
}
temp1->next = temp2->next;
temp2->next = temp2;
}
void print()
{
Node* temp = head;
while(temp != NULL){
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main()
{
head = NULL; //empty linked list
Insert(7,1); //List: 7
Insert(5,2); //List: 7,5
Insert(8,1); //List: 8,7,5
Insert(6,2); //List: 8,6,7,5
print();
system("pause");
}
Insert
fonction, vous devez d'abord aller sur le nœud où vous souhaitez insérer.,.. si vous avez besoin Node * temp2 = head;
au lieu de Node * temp2 = new Node();
. Et aussi, head
à ce moment peut être NULL.. donc nécessaire de vérifier que.OriginalL'auteur Raslion | 2014-01-21
Vous devez vous connecter pour publier un commentaire.
Juste avoir quelque chose comme ceci où vous parcourir jusqu'à la position donnée, et ensuite insérer:
OriginalL'auteur 1Mojojojo1
OriginalL'auteur Vatsal Prakash
OriginalL'auteur Sharvil Shah
Pour l'insertion à une position particulière
k
, il est nécessaire de parcourir la liste jusqu'à la positionk-1
et puis, ne l'insérez.[Vous n'avez pas besoin de créer un nouveau nœud à parcourir pour que la position que vous avez fait dans votre code] Vous devez parcourir de la tête de nœud.
OriginalL'auteur Dinesh
J'ai eu quelques problèmes avec le processus d'insertion comme vous, alors voici le code comment j'ai résolu le problème:
OriginalL'auteur Mr. Hello_world
OriginalL'auteur Khadija
Liens suivants peuvent vous aider à insérer un nœud à la position spécifique dans différents types de listes de liens:
Seul Lien De La Liste : Cliquez Ici
Circulaire Liste De Liens : Cliquez Ici
Doublement Liste De Liens : Cliquez Ici
Circulaire Doublement Liste De Liens : Cliquez ici
OriginalL'auteur mia
Essayer cette fonction.
structure de nœud de l'objet:
Mise en œuvre de la fonction:
De retourner une valeur d'état est toujours un dieu de la pratique, des constantes définies ici sont destinées à des fins de débogage/l'enregistrement de l'utilisation de l'application.
Hypothèse ici est que, vous appelez la fonction après validation des entrées (données et de la position). Si l'on peut valider les paramètres à l'intérieur de la fonction, il n'est pas une bonne pratique.
Espère que cette aide.
OriginalL'auteur IAmSurajBobade