Un gors probleme en C

ergolo -  
gaby10 Messages postés 445 Date d'inscription   Statut Membre Dernière intervention   -
salut cher CCM,
j'ai un probleme: en fait je fais un programme en C,mais lorsque je l'execute, il ne me permet pas d'obtenir ce que j'attend pourtan il me semble-t-il le programme est bien ecrit.En realite le progrmme demande a inserer un certain nombre d'elements dans une liste puis l'afficher. Le voici,SIL VOUS PLAIT dites moi ce qui ne va pas
/*Programme de gestion d'une liste d'elements*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
typedef struct liste{
	int info;
	liste *suiv;
	}liste;liste *l;
void insert( liste *pt,int val){
	liste *l1,*l2;int i;
	l1=(liste *)malloc(sizeof(liste));
	if(l1==NULL) printf("\tpas de place \n");
	else{/*
	for(i=0;i<=4;i++){
	printf("\t\tEntrer un element\n");
	scanf("%d",&val);*/
	(*l1).info=val;
	(*l1).suiv=NULL;
	if(pt==NULL){pt=l1;}
	else{l2=pt;
		while(l2->suiv!=NULL){
			l2=l2->suiv;}
			l2->suiv=l1;}
			printf("\t\tElement insere\n");
			}}
int affiche(liste *q){
	printf("\t\t\tVoici les elements de la liste\n");
	printf("\nliste:");
	while(q!=NULL){
	printf("%d",q->info);
	q=q->suiv;}return 1;
	}
int main(){
	int elt;
	clrscr();
	insert(l,elt);
	affiche(l);
	getch();
	return 1;
	}

2 réponses

  1. crabs Messages postés 909 Statut Membre 507
     
    Salut,
    1- mettre en global la variable l ne sert à rien
    2- insert() peut modifier la valeur du pointeur qui représente l'ancre de ta
    liste, donc il faut passer l'adresse de cette variable.
    3- utilise toujours la notation -> pour les pointeurs, c'est plus lisible

    Insert devient :
    void insert( liste **pt,int val){
    	liste *l1,*l2;int i;
    	l1=(liste *)malloc(sizeof(liste));
    	if(l1==NULL) { printf("\tpas de place \n"); return ; }
    	
    	l1->info=val;
    	l1->suiv=NULL;
    	if(*pt==NULL)
    		*pt=l1; 
    	else
    		{
    		/* recherche le dernier élément de la liste */
    		for(l2=*pt; l2->suiv; l2=l2->suiv) ; /* le ; est important ... */
    		l2->suiv=l1;
    		}
    	printf("\t\tElement insere\n");
    	}
    

    Et main :
    int main(){
    	liste* l ;
    	int elt; /* je vois pas la saisie ou l'init pour l'insert... */
    	clrscr();
    	insert(&l,elt);
    	affiche(l);
    	getch();
    	return 1;
    	}
    

    A+, crabs
    0
  2. gaby10 Messages postés 445 Date d'inscription   Statut Membre Dernière intervention   58
     
    Merci Cracks,
    0