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");
} 
Dans le 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