Algorithme LISTE CIRCULAIRE

Fermé
youkisall Messages postés 20 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 5 juin 2011 - 12 oct. 2008 à 04:08
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 12 oct. 2008 à 09:50
Bonjour,
J ai besoin d'aide pour cette question

L'algorithme qui divise une liste circulaire de n noeuds, ou n est un nombre pair en deux listes circulaires de
n/2 noeuds chacune.

Merci.

la suite d el exercice est de chercher un elemt X et un autre y dans les 2 differents listes obtenus apres la separation mais ca je sais comment le faire je pense j'ai commecé mon code comme suit :
courant = teteListe;
while(courant->suivant && !Trouve)
{
if(courant->suivant->data > AInserer->data)
Trouve = 1;
else
courant = courant->suivant;
}

Mais aucune idee sur comment diviser la liste circulaire merci d evotre aide

2 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
12 oct. 2008 à 08:17
Salut,

tu crées un liste circulaire en insérant les éléments de 1 à n/2 éléments et une liste en insérant les éléments de n/2+1 à n

Un code générique, à toi d'adapter
Liste *L1;
Liste *L2;

Liste *DiviserListe(Liste *L, int min,int max){
    Liste *pL, *new_L;
    pL = L;
    for(i=min;i<=max;++i){
      InsertionListe(new_L,pL->data);
      pL=pL->suivant;
    }
    return new_L;
}

L1 = ListeDiviserListe(L,1,n/2);
L2 = ListeDiviserListe(L,n/2+1,n);
1
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
12 oct. 2008 à 09:50
Re,

je vais fermer ce thread
continue sur le message initial
merci
-1