Accueil > Forum > > > > Tri par insertion sur liste simplement chainée
Tri par insertion sur liste simplement chainée
jeudi 3 janvier 2008 à 17:00:46 |
Tri par insertion sur liste simplement chainée

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 apparait que le tri par insertion serait particulièrement bien adapté. Cependant, je n'arrive pas à mettre au point l'algorithme réalisant ce tri ! J'ai déjà effectué des tris par insertion sur des vecteurs, et ça ne pose aucun problème. Quelqu'un pourrait-il m'aider ? Merci
|
|
jeudi 3 janvier 2008 à 22:06:51 |
Re : Tri par insertion sur liste simplement chainée

vecchio56
|
e étant l'élément à insérer au bon endroit dans ta liste. Tu cherches e1 et e2 tels que e1 <= e et e <= e2 (comme tu le fais avec des vecteurs). La seule chose qui change est la déplacement de l'élément. Si je n'oublies rien, ca doit donner ca: e.précédent.suivant = e.suivant e.suivant.precedent = e.precedent e1.suivant = e e2.precedent = e e.precedent =e1 e.suivant = e2 Ceci est pour une liste chainée dans les deux sens _____________________________________ Un éditeur de ressources gratuit pour Windows
|
|
vendredi 4 janvier 2008 à 08:53:58 |
Re : Tri par insertion sur liste simplement chainée

acx01b
|
salut
typedef struct element { struct element *suivant; ... } element, *liste;
en général le prototype de la fonction inserer_element
ça sera
void inserer_element(liste *l, element e);
ou bien
liste inserer_element(liste l, element e);
en effet l'élément peu être rajouté au début de la liste et dans ce cas la liste change d'adresse, il faut donc que inserer_element puisse modifier l'adresse de la liste
|
|
vendredi 4 janvier 2008 à 09:53:22 |
Re : Tri par insertion sur liste simplement chainée

Jordy89
|
Dans mon cas, tous les éléments sont déjà présents dans la liste. Il ne s'agit pas d'effectuer une insertion dans une liste triée, mais de trier une liste chainée d'élément. Ca revient au même ? On considère chaque élément et on modifie son pointeur afin de réordonner la totalité de la liste ?
|
|
vendredi 4 janvier 2008 à 09:57:06 |
Re : Tri par insertion sur liste simplement chainée

Jordy89
|
Ou alors on considère chaque élément, on recherche sa place définitive dans la liste, on le supprime de son ancienne place et on insère un nouvel élément à la bonne place avec l'information de celui qu'on a supprimé ?
|
|
vendredi 4 janvier 2008 à 10:42:17 |
Re : Tri par insertion sur liste simplement chainée

acx01b
|
Réponse acceptée !
salut
créer une liste chainée se fait en 2 temps (enfin tu peux faire les 2 en même temps aussi)
allouer de la mémoire ou simplement créer les noeuds, puis les connecter ensembles
dans ton cas tu as les noeuds qui sont déja créés suffit de les connecter ensemble
liste trier_liste(liste l) { liste liste_tree = NULL; while(l) { element *e = l; l = l->suivant; liste_triee = inserer_element(liste_triee, e); } return liste_triee; }
tu considères simplement ta liste non triée comme une liste d'éléments à insérer successivement au bon endroit dans la liste vide
c'est pour ça que la fonction trier_liste se résume en fait à inserer_element (le reste est trivial) si tu comprends pas dis moi
|
|
vendredi 4 janvier 2008 à 13:40:33 |
Re : Tri par insertion sur liste simplement chainée

Jordy89
|
Nickel, ça marche ! Merci beaucoup !
|
|
jeudi 20 novembre 2008 à 01:59:48 |
Re : Tri par insertion sur liste simplement chainée

mohboa
|
j'ai l'algo de trie par insertion vous pouvez convertir en c ou c++ c'est facile voila mon programe : procedure triInsertion( t: tab en entrée sortie )Algorithme
debut variable i, j, mem: entier pour i de1 j N-1 faire /* sélection de l'élément à insérer*/ mem <- t[ i ] j <- i tant que j>0 et t[j-1]>mem repeter /* décalage des éléments plus grands */ t[ j ] <- t[ j-1 ] j <- j - 1 fin tant que t[ j ] <- mem /* insertion */
fin pour;
fin ;
merci
|
|
lundi 27 avril 2009 à 19:08:01 |
Re : Tri par insertion sur liste simplement chainée

amar901130
|
Bonjour, voici une réponse détallée sur le Tri par insertion sur liste simplement chainée
#include<iostream> using namespace std;
struct boite{ char val; boite* lien;}; typedef boite* liste; /*************************************/ void creliste(liste &l){ l=0; } /********************************************/ bool appartient(liste l,char x){ if(!l) return false; else if(l->val==x) return true; else if(l->val>x) return false; else return appartient(l->lien,x); } /****************************************/ void ajouter_trier(liste &l, char x){ if(!appartient(l,x)){ liste aux=new boite; aux->val=x; if(l==0) { l=aux; aux->lien=0; } else if(l->val>x) { aux->lien=l; l=aux; } else { liste prec=l; bool fini=false; while(!fini){ if(prec->lien==0) fini=true; else if(prec->lien->val>x) fini=true; else prec=prec->lien; } //inserer aux aprés prec aux->lien=prec->lien; prec->lien=aux; } } } /*********************************/ void detruire(liste &l){ while(l){ liste aux=l; aux = l; l= l->lien; delete aux; } } /**********************************/ void trie(liste &l){ liste liste_vide_a_remplir=0; // on cree notre liste vide a remplir liste aux=l; // aux est le pointeur qui va parcourir la liste non triee while(aux!=0){ ajouter_trier(liste_vide_a_remplir,aux->val);// on ajoute en ordre dans liste_vide_a_remplir aux=aux->lien; } liste ptr=l; l=liste_vide_a_remplir; detruire(ptr); // on detruit ptr pour effacer la liste non triee } /************************************/ void affiche(liste l){ while(l){ cout<<l->val<<" "; l=l->lien; } cout<<endl; } /*********************************/ void ajouter_debut(liste &l, char x){ liste aux=new boite; aux->val=x; aux->lien=l; l=aux; } /********************************/ int main(){ liste maliste; creliste(maliste); ajouter_debut(maliste,'C'); ajouter_debut(maliste,'B'); ajouter_debut(maliste,'A'); ajouter_debut(maliste,'E'); affiche(maliste); trie(maliste); affiche(maliste); return 0; } test OK!
|
|
Cette discussion est classée dans : liste, tri, insertion, simplement, chainée
Répondre à ce message
Sujets en rapport avec ce message
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
Trier une liste simplement chainée [ par MasterShadows ]
Bonjour à tous,Dans un TP de C que je dois, il y'a une question qui me perturbe :Nous devions créer une structure LIST qui est simplement chainée, qui
[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
[Urgent] Fonction à liste chainée [ par zalpa ]
Bon voila, je suis un etudiant en 1ere année Informatique appliqué
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!
dessiner un graph a partir d'une liste chainée [ par MrMed ]
Bonjour a tous, J'ai devellopé un programme qui analyse les données d'un spectrometres et qui me sort l'intensités d'une longueur d'ondes precises pou
Suppression cellule d'une liste doublement chainée [ par donlefou ]
Quelqu'un pourrait m'écrire le code pour supprimer une cellule à une position dans une liste.J'ai un fichier C_Cellule.hpp / C_Cellule.cpp de cette st
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
Du remord pour vector [ par guifr ]
Bonjour à tous, Dans une application je dois utiliser des tableaux dynamiques. Ma première idée était de créer des listes chainées, mais j'hésite à i
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
ALGORITHMESALGORITHMES par whayoub
Cliquez pour lire la suite par whayoub
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|