TP5: Re-add renamed file
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 7 Mar 2017 09:22:05 +0000 (10:22 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Tue, 7 Mar 2017 09:22:05 +0000 (10:22 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
.gitignore
TP5/exo4/liste_chainee.c [new file with mode: 0644]

index d3a6eb954f6d68ff40efe2a0a16676d03189b658..b751f7b6cd0dcfaed8665317f8a525dab797dfe2 100644 (file)
@@ -4,7 +4,7 @@
 
 # editor trash
 *.swp
-*.~
+*~
 
 .build
 
diff --git a/TP5/exo4/liste_chainee.c b/TP5/exo4/liste_chainee.c
new file mode 100644 (file)
index 0000000..c46f149
--- /dev/null
@@ -0,0 +1,118 @@
+/********************************************************************/
+/*   Implantation d'une liste triee d'entiers                       */
+/********************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+
+typedef int element;
+
+typedef struct cellule {
+       element valeur;
+       struct cellule *suivant;
+} Cellule, *Liste;
+
+Liste ajouter_iter(element e, Liste L)
+{
+       Cellule *pc, *p1 = L, *p2 = NULL;
+
+       pc = (Cellule *) malloc(sizeof(Cellule));
+       pc->valeur = e;
+       pc->suivant = NULL;
+
+       if (!L)                 /* liste vide */
+               return pc;
+
+       while (p1 && (e >= p1->valeur)) {
+               p2 = p1;
+               p1 = p1->suivant;
+       }
+
+       if (!p2) {              /* insertion en tete */
+               pc->suivant = L;
+               L = pc;
+       } else {                /* insertion entre p2 et p1 */
+               p2->suivant = pc;
+               pc->suivant = p1;
+       }
+
+       return L;
+}
+
+int longueur_iter(Liste L)
+{
+       int longueur = 0;
+
+       if (!L)
+               return longueur;
+
+       while ( L->suivant != NULL)
+       {
+               L = L->suivant;
+               longueur++;
+       }
+       return longueur;
+}
+
+int longueur_rec(Liste L)
+{
+       /* ... */
+}
+
+void visualiser_iter(Liste L)
+{
+       /* ... */
+}
+
+void visualiser_rec(Liste L)
+{
+       /* ... */
+}
+
+int rechercher_iter(element e, Liste L)
+{
+       /* ... */
+}
+
+Liste rechercher_rec(element e, Liste L)
+{
+       /* ... */
+}
+
+Liste ajouter_rec(element e, Liste L)
+{
+       /* ... */
+}
+
+Liste supprimer_iter(element e, Liste L)
+{
+       /* ... */
+}
+
+Liste supprimer_rec(element e, Liste L)
+{
+       /* ... */
+}
+
+Liste inverser_iter(Liste L)
+{
+       /* ... */
+}
+
+Liste inverser_rec(Liste L)
+{
+       /* ... */
+}
+
+/****************************************************************************/
+int main()
+{
+       int x;
+       Liste L = NULL;
+       scanf("%d", &x);
+       L = ajouter_iter(x, L);
+       printf("longueur=%d\n", longueur_iter(L));
+       visualiser_iter(L);
+       /* ... */
+}
+
+/****************************************************************************/