diff --git a/ex3/main b/ex3/main new file mode 100755 index 0000000000000000000000000000000000000000..4febc603223aeb464e2605b968d1e575887b5831 Binary files /dev/null and b/ex3/main differ diff --git a/ex3/main.c b/ex3/main.c index 2a68350eb3d3133a356f68da555cd56120e9332b..7968300413dbd7698c3fa00ee715e9ab36182317 100644 --- a/ex3/main.c +++ b/ex3/main.c @@ -1,6 +1,77 @@ #include <stdio.h> #include <stdlib.h> + +typedef struct _element { // Elément de liste + int data; + struct _element* next; +} element_t; + +typedef struct _ddl { + element_t* head; + element_t* pos; +} dll_t; + +void free_liste(element_t* liste1){ + element_t* prec = liste1; + element_t* current = liste1; + while(current->next != NULL){ + prec = current; + current = current->next; + free(prec); + } + free(current); +} + +dll_t* dll_create(){ + dll_t* new = malloc(sizeof(dll_t)); + new->head = NULL; + new->pos = NULL; + return new; +} + +void dll_print(dll_t* liste){ + if(liste != NULL){ + element_t* current = liste->head; + while(current != NULL){ + printf("%d ", current->data); + current = current->next; + } + printf("\n"); + }else{ + printf("Empty"); + } +} + +void dll_destroy(dll_t* liste){ + free_liste(liste->head); + free(liste->pos); + free(liste); +} + +void dll_push(dll_t* liste, int data){ + element_t* new = malloc(sizeof(element_t)); + new->data = data; + new->next = liste->head; + liste->head = new; +} + int main(){ + int size, tmp; + dll_t* liste = dll_create(); + + + printf("Liste d'entiers : "); + scanf("%d", &size); + + while(size > 0){ + scanf("%d", &tmp); + dll_push(liste, tmp); + size --; + } + + dll_print(liste); + dll_destroy(liste); + return(0); } diff --git a/ex3/main.o b/ex3/main.o new file mode 100644 index 0000000000000000000000000000000000000000..2c4e18b5bb53f7f92e4c1d5b70ed95570883c8c9 Binary files /dev/null and b/ex3/main.o differ