begin process at 2012 05 30 19:07:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

trier une liste simplement chaine


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

trier une liste simplement chaine

dimanche 10 janvier 2010 à 00:52:45 | trier une liste simplement chaine

mdh12

je veux faire le trie d'une liste chaine

mon code ne me donne pas le resulta juste

pouvez le couriger

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
typedef struct noeud
{
int info;
struct noeud *suivant;
}noeud;

typedef struct
{noeud *tete;
}list;

void init(list *l)
{
l->tete=NULL;
}




void insertion_fin(list *l,int y)
{
noeud *e;
e=(noeud*)malloc(sizeof(noeud));
noeud *parcour =l->tete;
e->info=y;
e->suivant=NULL;
if(l->tete==NULL)
{
l->tete=e;
}
else
{
while(parcour->suivant!=NULL)
{
parcour=parcour->suivant;
}
parcour->suivant=e;
}
}





void trier(list *l)
{
noeud *precedent=l->tete;
noeud *parcour=precedent->suivant;
int temp,min;
while(precedent!=NULL)
{
min=precedent->info;
while(parcour!=NULL)
{
if(parcour->info<min)
min=parcour->info;
parcour=parcour->suivant;
}
if(precedent->info!=min)
{
temp= precedent->info;
precedent->info=min;
min=temp;
}
precedent=precedent->suivant;
}
}

void afficher(list l)
{
noeud *parcour =l.tete;
while(parcour!=NULL)
{
printf("%7d",parcour->info);
parcour=parcour->suivant;
}

}




void main()
{
list l;
int n,vi;
init(&l);
printf("donnez le nombre des noeuds a inserer :");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("donnez une valeur : ");

scanf("%d",&v);
insertion_fin(&l,v);
}
trier(&l);
afficher(l);

getch();
}



merci d'avance
dimanche 10 janvier 2010 à 09:06:07 | Re : trier une liste simplement chaine

aardman

Membre Club
Salut,
1) quand tu échanges les valeurs min et precedent->info, tu modifies bien la valeur du premier noeud, mais tu ne modifies pas la valeur du noeud qui contient la valeur min! tu modifies simplement ta variable locale min.
2) parcour doit être réinitialisé avant la deuxième boucle while.

Pour le 1), je te suggères d'utiliser une variable noeud* min qui pointe sur le noeud qui contient la valeur min, plutot qu'une variable int.
dimanche 10 janvier 2010 à 10:29:53 | Re : trier une liste simplement chaine

mdh12


on dois s'intereser a la fonction trier

je change un peux mais ca pas marche

void trier(list *l)
{
noeud *precedent=l->tete;
noeud *parcour=precedent->suivant;
int temp,min;
while(precedent!=NULL)
{
min=precedent->info;
while(parcour!=NULL)
{
if(parcour->info<min)
min=parcour->info;
parcour=parcour->suivant;
}
if(precedent->info!=min)
{
temp= precedent->info;
precedent->info=parcour->info; //changement
parcour>info=temp;
}
precedent=precedent->suivant;
}
}




SVP donne moi le code correcte de cette fonction

je vous donne le syntaxe au debut de la liste


C URGENT
dimanche 10 janvier 2010 à 11:10:23 | Re : trier une liste simplement chaine

aardman

Membre Club
Salut,
Le but c'est que tu comprennes tout seul, si je te corrige le truc ça sert à rien. Relis mon premier post!
dimanche 10 janvier 2010 à 13:44:15 | Re : trier une liste simplement chaine

mdh12

y ' t'il un exemple executable qui gere le trie d'une liste

je parle toujour de liste simplement chaine

pour comprendre mieux

car a ce moment je suis bloque


Cette discussion est classée dans : tete, parcour, info, noeud, precedent


Répondre à ce message

Sujets en rapport avec ce message

fusion de deux liste simplement chaine [ par mdh12 ] salut, je veux faire fusion de deux liste simplement chaine a condition que la liste 1 est trier coissant de meme pour la liste 2 j'ai base sur le file en c++ [ par ralou ] salut les amis pour bien comprendre la file et la genericite plus les pointeurs je voulais terminer cet excercice mais vraiment j'ai pas arriver a le Trie liste chainée simple [ par angelfire0808 ] Bonjour, voila j'essaye d'apprendre à trier une liste chainée mais j'ai quelques soucis #include#include#include#include<co erreur dans une liste simple [ par sakjimh ] salut, j'ai crée un programme qui saisie une liste et les affiche a l'execution mais il m'affiche une erreur genre probleme d'allocation et je ne vois PB de tri [ par dodo1309 ] Bonjour,Voila je suis entrain de faire un programme qui doit permettre à l'utilisateur d'encoder les valeurs de son choix pour ensuite l'ajouter à la Liste chainée passée en paramètre [ par morayma ] J'ai écrit un petit programme qui appelle une procédure qui ajoute des éléments à une liste chainée simple. Mon problème c'est que la liste n'est pas Recherche dans un arbre (en C) [ par salsa81 ] Bonjour, Voilà je suis en train de faire quelques révision sur les arbres en C et je bloque sur un point. J'ai un arbre dont voici la structure : [ Recupérer le nom du premier noeud d'un treeview [ par kitcarflo ] J'aimerai pouvoir récupérer dans une variable le mot inscrit dans un treeview. par exemple mon treeview commence par "toto", en enfant de toto on tro très urgent: commande ls-l [ par SAADOULI ] bj a tous: voila une implémentation de ls -l en c qui n'est pas complète il ya quelques erreurs au niveau l'affichage des droits d'accés..... est ce q besoin d'aide sur mon programme arbre binaire en c++ [ par biyiha ] bonjour, voici mon code ecrit en c++ c++ qui m'affiche pleins d'erreur;; il s'agit des arbres binaires de recherche , quelqu'un pourrait -il m'aider,


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales