Bonjour tout le monde,
Je viens de commencer a programmer en C.
Il faut que je cré une liste doublement chainée et je l'affiche.
J'ai pris un code d'internet et je l'ai adapter a mes besoins.
Je ne comrend pas ce qui se passe lors de la compilation: il ya 0erreurs et 4 warning
mais lorsque j'execute a mehode "ajouter element"
le programme s'arret en m'affichant Debug error!!
runtime error!!
Que dois je faire!!
J'ai vraiment besoin d'une aide!
voici le code .h
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct objet
{
int data[2];
struct objet *suivant;
struct objet *precedent;
} objet;
objet *CreeListeVide();
int InsertionObjet(objet *,objet );
void AfficheListe(objet * );
voici le code . cpp
# include "MOMBS.h"
objet *CreeListeVide() {
objet * sentinelle;
sentinelle = (objet *)malloc(sizeof(objet));
sentinelle->precedent = sentinelle;
sentinelle->suivant = sentinelle;
sentinelle->data[0] = 0;
sentinelle->data[1] = 0;
return sentinelle;
}
void AfficheListe(objet* tete)
{
objet *temp=tete->suivant;
if(tete->suivant==tete)
printf(" la liste est vide\n");
else
while(temp!=tete)
{
printf("%d\n",temp->data[0]);
printf("%d\n",temp->data[1]);
temp=temp->suivant;
}
}
int InsertionObjet(objet *tete,objet nouvo)
{
objet* temp;
objet* acree;
int comp=-1,i;
acree=(objet*)malloc(sizeof(objet));
acree=tete->suivant;
/* *acree=nouvo; */
for (i=0; i<2 ; i++)
{
acree->data[i]=nouvo.data[i];
}
acree->suivant=nouvo.suivant;
acree->precedent=nouvo.precedent;
//while(strcmp(temp->nom,acree->nom)<0 && temp!=tete)
//{
// temp=temp->suivant;
//}
//if(strcmp(temp->nom,acree->nom)==0)
// {
// printf("ce nom est deja engistre\n");
// free(acree);/* point*/
// return comp ;
// }
//else
// {
acree->suivant=temp;
acree->precedent=temp->precedent;
(acree->precedent)->suivant=acree;
temp->precedent=acree;
comp=0;
return comp;
}
void remp(objet* tete)
{
int i,n,ko;
objet inter;
printf("combien d'items vous voulez ajouter?\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf(" The weight :\n");
scanf("%d",&(inter.data[0]));
printf("The priority:\n");
scanf("%f",&(inter.data[1]));
ko=InsertionObjet(tete,inter);
}
AfficheListe(tete);
}
int Menu()
{
int Choix;
printf("1)Ajouter un element\n");
printf("2)Afficher le contenu d'une liste\n");
// printf("3)Vider une liste\n");
// printf("4)Supprimer un element\n");
// printf("5)Rechercher un element\n");
// printf("6)Fusion de 2 listes\n");
// printf("7)Charger un fichier\n");
printf("8)Quitter\n");
printf("Saisir votre choix:");
scanf("%d",&Choix);
while (Choix < 1 || Choix > 8)
{
printf("Votre choix doit etre compris entre 1 et 8.\n");
printf("Saisir votre choix:");
fflush(stdin);
scanf("%d",&Choix);
}
return Choix;
}
int main()
{
int ko,choix;
objet *tete1,*tete2,nouv;
tete1=CreeListeVide();
choix=14;
while(choix!=8)
{
if(choix==1)
remp(tete1);
else
if(choix==2)
AfficheListe(tete1);
choix=Menu();
}
return 0;
}
J'ai chercher un code sur internet pus simle mais je n'ai pas trouvé!!
Si vous avez un que vous pouvez me suggérer, je vous serais tres reconnaissable!!
J'en ai vraiment besoin
Merci