diff --git a/ex1/main b/ex1/main new file mode 100755 index 0000000000000000000000000000000000000000..02c844ad807c916f9a44698c9214176edea3edb3 Binary files /dev/null and b/ex1/main differ diff --git a/ex1/main.c b/ex1/main.c index e3ada1f3405470095b3c8d88f9813595864d1a99..0d7e594faee2e91edf1182f58d3a7d309a1a77ba 100644 --- a/ex1/main.c +++ b/ex1/main.c @@ -1,8 +1,161 @@ #include <stdio.h> #include <stdlib.h> +typedef struct _element { // Elément de liste + int data; + struct _element* next; +} element_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); +} + + +void add_liste(element_t* liste, int val){ + element_t* new = malloc(sizeof(element_t)); + new->data = val; + new->next = NULL; + element_t* current = liste; + while(current->next != NULL ){ + current = current->next; + } + current->next = new; +} + +void print_liste(element_t* liste){ + if(liste != NULL){ + element_t* current = liste; + while(current->next != NULL){ + printf("%d, ", current->data); + current = current->next; + } + printf("%d \n", current->data); + }else{ + printf("Empty liste \n"); + } +} + +bool is_in_liste(element_t* liste, int x){ + if(liste != NULL){ + element_t* current = liste; + while(current->next != NULL){ + if(current->x == x){ + return current; + } + current = current->next; + } + }else{ + return liste; + } +} +bool is_tri(element_t* liste){ + element_t* current = liste; + element_t* prec = liste; + while(current != NULL){ + if(current->data > prec->data){ + return false; + } + prec = current; + current = current->next; + } + return true; +} + +void tri_list(element_t* liste){ + element_t* current = liste->next; + element_t* prec = liste; + element_t* prec2 = liste; + while(!is_tri(liste)){ + while(current != NULL){ + if(current->data > prec->data){ + + prec->next = current->next + }if(current->data == prec->data){ + prec->next = current->next; + free(current); + current = prec->next; + }else{ + + } + prec2 = prec; + prec = current; + current = current->next; + } + + } + +} + +element_t* tri_double_list(element_t* liste1, element_t* liste2){ + element_t* current1 = liste1->next; + element_t* current2 = liste2; + + element_t* new = malloc(sizeof(element_t)); + new->data = liste1->data; + new->NULL; + element_t* new_index = new; + while(current1 != NULL){ + add_liste(new, current1->data); + current1 = current1->next; + } + + while(current2 != NULL){ + add_liste(new, current1->data); + current2 = current2->next; + } + + + + return new; +} + + + int main(){ + int size, tmp; + element_t* liste1 = malloc(sizeof(element_t)); + element_t* liste2 = malloc(sizeof(element_t)); + + printf("Entrez la liste 1 : "); + scanf("%d", &size); + scanf("%d", &tmp); + + liste1->data = tmp; + liste1->next = NULL; + size--; + + while(size > 0){ + scanf("%d", &tmp); + add_liste(liste1, tmp); + size --; + } + + printf("Entrez la liste 2 : "); + scanf("%d", &size); + scanf("%d", &tmp); + + liste2->data = tmp; + liste2->next = NULL; + size--; + + while(size > 0){ + scanf("%d", &tmp); + add_liste(liste2, tmp); + size --; + } + + + + free_liste(liste1); + free_liste(liste2); - printf("Hello word\n"); return(0); } diff --git a/ex1/main.o b/ex1/main.o new file mode 100644 index 0000000000000000000000000000000000000000..f1b6d9a92c3bf834f3585349584e585d8e982423 Binary files /dev/null and b/ex1/main.o differ