[langage C] probleme dans les Listes en C
Fermé
miss_master
-
1 mars 2007 à 12:08
azamharir Messages postés 8 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 4 juin 2007 - 4 mars 2007 à 01:36
azamharir Messages postés 8 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 4 juin 2007 - 4 mars 2007 à 01:36
A voir également:
- Tp liste chaînée langage c
- Liste déroulante excel - Guide
- Langage ascii - Guide
- Liste déroulante en cascade - Guide
- Langage binaire - Guide
- Liste de diffusion whatsapp - Guide
5 réponses
Stupeflip
Messages postés
391
Date d'inscription
jeudi 8 février 2007
Statut
Membre
Dernière intervention
4 décembre 2007
94
1 mars 2007 à 12:16
1 mars 2007 à 12:16
Salut,
liste est surement une structure qu'il a définie avant :)
l->suiv c'est un pointeur sur l.suiv afin de voir directement si y a qqch dessus ou non
liste est surement une structure qu'il a définie avant :)
l->suiv c'est un pointeur sur l.suiv afin de voir directement si y a qqch dessus ou non
non jai rien de definie comme structure pour liste.
donc l->suiv c'est un pointeur qui contient l'adresse de la case suivante.
est ce que quelqu'un peut m'aider plus sur la premiere fonction de cour svpsvp
merci beaucoup
donc l->suiv c'est un pointeur qui contient l'adresse de la case suivante.
est ce que quelqu'un peut m'aider plus sur la premiere fonction de cour svpsvp
merci beaucoup
Michael_Ange
Messages postés
223
Date d'inscription
jeudi 27 novembre 2003
Statut
Membre
Dernière intervention
29 mai 2015
19
3 mars 2007 à 10:18
3 mars 2007 à 10:18
slt miss_master !!!
déja je pense que cè "typedef" et non "type def" !!!
typedef permet de redéfinir un nom de type utilisable pour déclarer des variables dans la suite du programme.
dc pour tes trois premières lignes dont tu parle, on a ceci :
typedef float type-val; // le type float est renommée en type-val
typedef struct scomp (type-val val, struct scomp*suiv;)type-comp;
//tu defini une structure scomp ki contient une valeur de type type-val (float) et l'adresse de l'elmt suivant (pour une liste chainée) et on nomme cette structure type-comp;
typedef type-comp *adre-comp;
// tu vient de renommer le type type-comp en adre-comp, (bien ke cette partie me trouble un peu a cause du caractère "*" ki sert a definir des pointeurs)
en gros cè ça !!!!
déja je pense que cè "typedef" et non "type def" !!!
typedef permet de redéfinir un nom de type utilisable pour déclarer des variables dans la suite du programme.
dc pour tes trois premières lignes dont tu parle, on a ceci :
typedef float type-val; // le type float est renommée en type-val
typedef struct scomp (type-val val, struct scomp*suiv;)type-comp;
//tu defini une structure scomp ki contient une valeur de type type-val (float) et l'adresse de l'elmt suivant (pour une liste chainée) et on nomme cette structure type-comp;
typedef type-comp *adre-comp;
// tu vient de renommer le type type-comp en adre-comp, (bien ke cette partie me trouble un peu a cause du caractère "*" ki sert a definir des pointeurs)
en gros cè ça !!!!
azamharir
Messages postés
8
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
4 juin 2007
4 mars 2007 à 01:03
4 mars 2007 à 01:03
salut
j'ai vu ton code et je l'ai corrigé.
voici le résultat :
typedef float type_val;/* ici on crée un nouveau type qui s'appelle
type_val et qui n'est d'autre qu'un float
donc si tu declare : type_val f; le f est alors un float */
typedef struct scomp {
type_val val;
struct scomp *suiv;
}type_comp;
typedef type_comp* adre_comp;
adre_comp supprimer (adre_comp prem)
{
if(prem==NULL)
{
puts("rien asupprimer");
return NULL;
}
adre_comp a_virer;
a_virer=prem;
prem=prem->suiv;
free(a_virer);
return prem;
}
j'ai vu ton code et je l'ai corrigé.
voici le résultat :
typedef float type_val;/* ici on crée un nouveau type qui s'appelle
type_val et qui n'est d'autre qu'un float
donc si tu declare : type_val f; le f est alors un float */
typedef struct scomp {
type_val val;
struct scomp *suiv;
}type_comp;
typedef type_comp* adre_comp;
adre_comp supprimer (adre_comp prem)
{
if(prem==NULL)
{
puts("rien asupprimer");
return NULL;
}
adre_comp a_virer;
a_virer=prem;
prem=prem->suiv;
free(a_virer);
return prem;
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
azamharir
Messages postés
8
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
4 juin 2007
4 mars 2007 à 01:36
4 mars 2007 à 01:36
salut
excuse moi mais mon ancien message etait une faute de frappe.
voici le résultat :
#include<stdio.h>
#include<stdlib.h> // juste les biblios
typedef float type_val;/* ici on crée un nouveau type qui s'appelle
type_val et qui n'est d'autre qu'un float
donc si tu declare : type_val f; le f est alors un float */
typedef struct scomp {
type_val val;
struct scomp *suiv;
}type_comp;
/* ici tu declare un nouveau type type_comp qui est une structure contenant un type_val et un pointeur sur un autre type_comp (suiv) */
typedef type_comp* adre_comp;/* ici un pointeur de type
type_comp sera nommé adre_comp donc une declaration comme
type_comp* t; est équivau à adre_comp t; */
/* ta liste sera composé d'une liste de adre_comp, elle aura une tete
c'est la premiere adre_comp puis cette premiere aura un suiv c la
2° et ainsi de suite ... */
/* la fonction supprimer prend comme parametre une adresse comp
et retourne le meme type */
adre_comp supprimer (adre_comp prem)
{
if(prem==NULL)/* si prem est nulle(pas d'allocation de memoire)
{
puts("rien a supprimer");
return NULL; /* on retourne NULL, donc on n'a rien supprimé
la liste prem etait deja vide (=NULL) */
}
adre_comp a_virer;/* on définit une variable locale de type
adre_comp pour y conserver la nouvelle tete de liste */
a_virer=prem; /* a_virer pointe sur la tete de liste prem
prem=prem->suiv;/* prem pointe sur son suivant donc la 2°
adre_comp est devenu la tete de liste */
free(a_virer);/* on libere l'emplacement memoire de l'ancienne
tete de liste qui etait mise ds a_virer */
return prem; /* on retourne la nouvelle tete de liste
}
cette fonction, je l'ai essayé avec d'autres fcts dans 1 programme et elle marche tres bien.
excuse moi mais mon ancien message etait une faute de frappe.
voici le résultat :
#include<stdio.h>
#include<stdlib.h> // juste les biblios
typedef float type_val;/* ici on crée un nouveau type qui s'appelle
type_val et qui n'est d'autre qu'un float
donc si tu declare : type_val f; le f est alors un float */
typedef struct scomp {
type_val val;
struct scomp *suiv;
}type_comp;
/* ici tu declare un nouveau type type_comp qui est une structure contenant un type_val et un pointeur sur un autre type_comp (suiv) */
typedef type_comp* adre_comp;/* ici un pointeur de type
type_comp sera nommé adre_comp donc une declaration comme
type_comp* t; est équivau à adre_comp t; */
/* ta liste sera composé d'une liste de adre_comp, elle aura une tete
c'est la premiere adre_comp puis cette premiere aura un suiv c la
2° et ainsi de suite ... */
/* la fonction supprimer prend comme parametre une adresse comp
et retourne le meme type */
adre_comp supprimer (adre_comp prem)
{
if(prem==NULL)/* si prem est nulle(pas d'allocation de memoire)
{
puts("rien a supprimer");
return NULL; /* on retourne NULL, donc on n'a rien supprimé
la liste prem etait deja vide (=NULL) */
}
adre_comp a_virer;/* on définit une variable locale de type
adre_comp pour y conserver la nouvelle tete de liste */
a_virer=prem; /* a_virer pointe sur la tete de liste prem
prem=prem->suiv;/* prem pointe sur son suivant donc la 2°
adre_comp est devenu la tete de liste */
free(a_virer);/* on libere l'emplacement memoire de l'ancienne
tete de liste qui etait mise ds a_virer */
return prem; /* on retourne la nouvelle tete de liste
}
cette fonction, je l'ai essayé avec d'autres fcts dans 1 programme et elle marche tres bien.