begin process at 2012 05 29 03:58:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

insertion par tri sur une liste chainée


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

insertion par tri sur une liste chainée

mercredi 29 décembre 2010 à 14:59:00 | insertion par tri sur une liste chainée

Akhelios

Salut tous,
Je voulais réaliser une fonction d'ajout par tri dans une liste chaînée, sauf que ça marche pas et je me demande pourquoi, bon voilà le code :
Code C/C++ :
///type utilisé
typedef struct scellule {
    char * nom;
    int age;
    struct scellule * suiv;
} tcellule;

///type pointeur (tête...)
typedef tcellule  * pcellule;

pcellule tete=NULL;
void ajout_tri(char *ch, int x){
	pcellule p, l;
	l=(tcellule*)malloc(sizeof(tcellule));
	l->nom=malloc(strlen(ch)+1);
	//détermination de l'adresse après laquelle on doit insérer
	for(p=tete;p!=NULL && strcmp(p->nom,ch)>0;p=p->suiv);
	//inserer le nouveau element là où il faut
	if(p==tete){
		l->suiv=tete->suiv;
		tete->suiv=l;}
	if(p->suiv==NULL){
		l->suiv=NULL;
		p->suiv=l;}
	if(p->suiv!=NULL && p!=tete){
		l->suiv=p->suiv;
		p->suiv=l;}
	//remplir cet élément
	strcpy(l->nom,ch);
	l->age=x;
	}

Y a-t-il surtout un problème avec la tete, allocations ?
mercredi 29 décembre 2010 à 15:16:48 | Re : insertion par tri sur une liste chainée

buno

Administrateur CodeS-SourceS
Yop!
Je vois plusieurs problèmes:
- ta boucle for est vide: en effet, il y a un point-virgule à la fin de l'instruction et pas d'accolades...
- si tete vaut NULL, ce qui est le cas pour le 1er passage, que fais-tu?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
mercredi 29 décembre 2010 à 15:59:04 | Re : insertion par tri sur une liste chainée

Akhelios

Salut Buno,
Bon pour ma boucle for, elle n'est pas vide : elle enchaîne jusqu'à ce que la condition n'est plus vérifiée, c'est à dire qu'à la fin de cette boucle j'obtiens un p qui contient l'adresse du premier élément sur la liste où strcmp(p->nom,ch)<0 ou (le cas échéant) où l'on est sur la fin de la liste (p->suiv==NULL)...

Si tete est NULL, j'ai mis un morceau de code correspondant :
Code C/C++ :
if(p==tete){
		l->suiv=tete->suiv;
		tete->suiv=l;}

là je pointe l'élément sur le suivant de la tete (chaînage) puis je remets la tete sur cette élément...
Donc je vois pas trop il est où le problème.
Merci de ton intervention quand même.
mercredi 29 décembre 2010 à 16:01:12 | Re : insertion par tri sur une liste chainée

buno

Administrateur CodeS-SourceS

for(p=tete;p!=NULL && strcmp(p->nom,ch)>0;p=p->suiv);


Ton point-virgule "arrête" ta boucle for et tu n'as pas d'accolades.
Erreur de copier-coller?
Quel est le problème exactement?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo


Cette discussion est classée dans : tete, liste, tri, suiv, tcellule


Répondre à ce message

Sujets en rapport avec ce message

constrution d'un arbre [ par eglentine ] bonjour, j'esseye de construire un arbre pour la compression jpeg d'une image, et j'utilise le methode de huffman.g utilisé une liste qui contiendra l Structures nommées incompréhensible ... à l'aide [ par otterc8 ] Bonjour, voila j'ai ce bout de code que je ne comprends pas top, malgré des recherches sur les structures, il y a des choses que je ne comprends pas! Listes chainées [ par angelfire0808 ] Bonjour voila voici mon, code j'ai une ereeur de compilation mais je ne comprend pas ;-(l'erreur c'est ici :   " nouveau->suivant=(*tete); ".De plus j Tri par insertion sur listes simplement chainées [ par ichigoZ710 ] Bonjour, voilà, je vous explique rapidement mon problème, je dois élaborer une procédure de tri par insertion sur une liste qui vient en paramètre de tri par insertion dans une liste chaînée [ par titi4659 ] Bonjour,j'ai un problème avec une liste chaînée.j'ai une liste d'element que j'arrive a récupéré mais je souhaiterai que lorsque je récupère un elemen Tri par insertion sur liste simplement chainée [ par Jordy89 ] Bonjour,Dans le cadre de la manipulation d'une liste chaînée, je suis amené à effectuer un tri; Je me suis renseigné à gauche et à droite, et il appar 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 problème tri d'une liste d'objet ! [ par tomsawyerbelgique ] Bonjour, j'aimerais savoir comment on fait pour surdéfinir un foncteur de tri de liste d'objet. C'est objet sont des pointeurs sur une structure et la Liste, tri sur date (et non texte de la date) [ par themaste ] Bonjour à tous!Voila, mon problème est que j'ai une liste d'éléments, dont une colonne est remplie par une date.Mon souci, c'est que lorsque je clique [LangageC]Tri d'une liste chainée d'entiers. [ par sleyze ] Bonsoir, quelqu'un pourrait il me donner une fonction permettant de trier une liste chainée L dans l'ordre croissant en utilisant un tri autre que le


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,577 sec (4)

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