|
|
|
|
Posté par
castorgris, le vendredi 16 mars 2007 à 22:31:55#include<stdio.h>
#include<stdlib.h>
typedef struct liste
{
int x;
struct liste* next;
}liste;
void ajouteFin(liste *l,int b) /* ajoute un element en fin de liste*/
{
liste *a;
a=(liste *)malloc(sizeof(liste));
a->x=b;
l->next=a;
}
void ajouteDebut(liste *l,int b)/* ajoute element en début de liste*/
{
liste *a;
a=(liste *)malloc(sizeof(liste));
a->x=b;
a->next=l;
l=a;/*pb */
}
int main()
{
liste *l=NULL;
l=(liste *)malloc(sizeof(liste));
printf("test");
if(l!=NULL)
{
l->x=1;
l->next=NULL;
ajouteDebut(l,4);
}
free(l);
return 0;
}
Configuration: Ubuntu 6.10 Firefox 2.0.0.2
void ajouteFin(liste *l,int b) /* ajoute un element en fin de liste*/
{
liste *a;
a=(liste *)malloc(sizeof(liste));
a->x=b;
l->next=a;
}
Attention, tu n'ajoutes pas un élément en fin de liste mais tu chaine *l vers ta nouvelle cellule. Pour ajouter a la fin, il faut donc avoir supposé que *l est le dernier element de ta liste... De plus aucune condition ne semble marquer la fin de liste (a.next pointe sur quoi ?). void ajouteDebut(liste *l,int b)/* ajoute element en début de liste*/
{
liste *a;
a=(liste *)malloc(sizeof(liste));
a->x=b;
a->next=l;
l=a;/*pb */
}
En effet, l=a pose un problème. Déjà en dehors de toute interprétation algorithmique, il ne sert a rien d'affecter l à la fin de cette fonction car sa durée de vie est limitée à cette fonction. Essaie plutôt : /** * @brief Ajoute un élément en tete de liste. * @param *l Liste a modifier. * @param b Element a ajouter * @return Adresse de la nouvelle tete */ liste* ajouterDebut(liste* l, int b); A toi de coder la suite ;) int main()
{
liste *l=NULL;
l=(liste *)malloc(sizeof(liste));
printf("test");
if(l!=NULL)
{
l->x=1;
l->next=NULL;
ajouteDebut(l,4);
}
free(l);
return 0;
}
Il faut aussi liberer la cellule ajoutée ! Bon code. GPG Key ID = 5518CFC7 |
Merci pour l'aide.
puis sinon j'ai trouvé ce site pour ceux qui ont un pb similaire http://www.siteduzero.com/tuto-3-9440-1-les-listes-chainees.html#ss_part_3 |
salut je t'ai fait une fonction qui ajoute ,je crois que sa va marcher
/* insertion au début de la liste */ int ins_debut_liste (Liste * liste, char *donnee){ Element *nouveau_element; if ((nouveau_element = (Element *) malloc (sizeof (Element))) == NULL) return -1; if ((nouveau_element->donnee = (char *) malloc (50 * sizeof (char))) == NULL) return -1; strcpy (nouveau_element->donnee, donnee); nouveau_element->suivant = liste->debut; liste->debut = nouveau_element; liste->taille++; return 0; } |
| 07/10 17h14 | Liste simplement chaînée | Langage C |
| 23/10 22h14 | Liste doublement chaînée | Langage C |
| 27/08 00h24 | [Sécurité] Les Access Control Lists (ACLs) | Sécurité |
| 02/12 12h13 | Listes circulaires | Langage C |
| 07/12 20h32 | Les files | Langage C |
| 11/06 22h40 | [C] Liste simplement chainée ... Mémoire ... | 3 |
| 20/07 11h09 | [C] liste chainée simples problème pointeur ? | 2 |
| 06/01 17h26 | Listes simplement chainées en lagage c | 1 |
| 05/11 20h25 | Listes simplement chainees | 2 |
![]() | FastStone Capture - Ce logiciel de capture est léger, efficace et simple à utiliser. Vous pouvez capturer l'écran complet, une fenêtre, une... | Catégorie: Capture Licence: Shareware |
![]() | CCleaner - CCleaner (Crap Cleaner) est un utilitaire de nettoyage gratuit permettant de garantir un respect de la vie privée en... | Catégorie: Anonymat/Confidentialité Licence: Freeware/gratuit |
![]() | Conjugaison - Ce petit logiciel totalement gratuit peut s'avérer très pratique lors de la saisie d'un texte sur un logiciel de traitement... | Catégorie: Grammaire/Orthographe Licence: Freeware/gratuit |
![]() | Cartoonist - Cartoonist est un petit logiciel de morphing gratuit, permettant de faire des caricatures de vos amis et cela très... | Catégorie: Trucage photo Licence: Freeware/gratuit |
![]() | Chaintech MK8T890 | Catégorie: Carte mère | 65.00 € PriceMinister |
![]() | Surcouf Simplicite 2 Intel | Catégorie: Ordinateur de bureau | 700.00 € Surcouf |
![]() | SimpleTech CompactFlash 512 Mo | Catégorie: Carte Mémoire / Clé USB | |
![]() | Chaintech GeForce 7600GS 256 | Catégorie: Carte graphique |