Comment trier une liste simplement chaine
Fermé
mb42
Messages postés
432
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
14 janvier 2014
-
10 janv. 2010 à 13:13
es-said - 4 janv. 2013 à 13:34
es-said - 4 janv. 2013 à 13:34
A voir également:
- Trier une liste par ordre croissant python sans sort
- Excel trier par ordre croissant chiffre - Guide
- Liste déroulante excel - Guide
- Triez cette liste par ordre alphabétique des villes et par note de la meilleure à la moins bonne. quel mot est formé par les 8 premières lettres de la colonne code ? ✓ - Forum Excel
- Python est introuvable. exúcutez sans argument pour procúder ó l - Forum Python
- Vba trier colonne par ordre croissant - Forum VB / VBA
5 réponses
mb42
Messages postés
432
Date d'inscription
vendredi 17 octobre 2008
Statut
Membre
Dernière intervention
14 janvier 2014
7
10 janv. 2010 à 13:40
10 janv. 2010 à 13:40
qu'esque vous pensez de ce code
c 'est un code complet contient ( 4 fonction avec main)
mais le probleme suppose toujour a la fonction trie
je parle toujour des liste simplement chaine
#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) // le probleme est la
{
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();
}
c 'est un code complet contient ( 4 fonction avec main)
mais le probleme suppose toujour a la fonction trie
je parle toujour des liste simplement chaine
#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) // le probleme est la
{
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();
}