1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| #include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "progListeSC.h"
using namespace std;
// DERNIERLSC ET ESTTRIEELSC
// Res : Renvoie l'adresse de la derniere cellule de la liste non vide L
ListeSC dernierLSC(ListeSC L){
assert(L != NULL);
return L;
}
// Res : Renvoie 1 si L est une ListeSC triee, 0 sinon
bool estTrieeLSC(ListeSC L){
return true;
}
// OTERREPETITION
// Res : Supprime de la ListeSC L tous les elements consecutifs egaux
// Opere en modifiant le chainage de la ListeSC L
// version iterative
void oterRepetitionLSC(ListeSC L){
ListeSC LSR=NULL; // pour liste sans répétitions
ListeSC parcourtL = L; // pour parcourir L
while (parcourtL != NULL){
ListeSC parcourtLSR = LSR;
bool trouve=false;
while (parcourtLSR != NULL and !trouve){
if (parcourtL->info == parcourtLSR-> info)
trouve=true;
else
parcourtLSR = parcourtLSR->succ;
}
if(parcourtLSR == NULL)
LSR=creerLSC(parcourtL->info,LSR);
parcourtL = parcourtL->succ;
}
*L=*LSR;
return;
}
// Res : Supprime de la ListeSC L tous les elements consecutifs egaux
// Opere en modifiant le chainage de la ListeSC L
// version recursive
void oterRepetitionLSCR(ListeSC L){
return;
}
// CONCATENATION DE 2 LISTES
// Res : Modifie la liste L1 en la concatenant avec la liste l2
// Opere en modifiant le chainage de la listeSC L1
// Version utilisant la fonction dernierLSC
void concatLSC(ListeSC& L1,ListeSC L2){
return;
}
// Res : Renvoie la ListeSC obtenue par concatenation des ListeSC L1 et L2
// Opere en recopiant les elements des 2 listeSC L1 et L2
// complexite : ???
ListeSC concatLSCCopie(ListeSC L1,ListeSC L2){
if(L1 == NULL){
return L2;}
if(L2 == NULL){
return L1;}
concatLSCCopie(lireLSC(insererFinLSC(L1,L2->info)),L2->succ);
return NULL;
} |