Insertion a une position pos dans une liste

Fermé
tsuka - 5 déc. 2012 à 13:48
Bonjour,

Ma mission ( si je l'accepte ) est de donner le choix à l'utilisateur de pouvoir faire des insertions au début et en fin de liste et de faire l'insertion à une position POS donnée par l'utilisateur .

Pour l'insertion en tête et en queue tout marche parfaitement , par contre l'insertion à une position me pose vraiment problème .
Voici mon code :

/* ---------- liste.h ----------- */

/*liste.h*/
using namespace std;
typedef int T;


struct MaillonT
{
  MaillonT *succ;
  T elt;
};

typedef MaillonT *Cellule ;
const Cellule CelluleVide = NULL;

struct ListeT
{
  Cellule fin;
  Cellule debut;
  int taille;
};


 

<code>
/*liste.cpp */
#include<stdio.h>
#include<iostream>
#include <stdlib.h>
#include "listeT.h"
#include "assert.h"

void ins_liste (ListeT & li, T e, int pos)
{
    if ((pos > 1 && pos <= li.taille))
    {
        MaillonT *courant;
        MaillonT *nouvel_element;

        int i;

        courant = new MaillonT;
        courant -> elt = e;
        courant = li.debut;

        for (i = 1; i < pos; ++i)
        {
            courant = courant -> succ;
        }

        if (courant -> succ == CelluleVide){}
        nouvel_element -> elt = e;
        nouvel_element -> succ = courant -> succ;
        courant -> succ = nouvel_element;

        li.taille++;

}
}


Le problème est peut être dans ma compréhension pourtant je visualise ce que je fais .
Au compilateur il me met une boucle infinie de l'élément que j'insère.
Merci d'avance de votre aide :)