From 3de00528618f48f669d1b2ff673fd1370cdf5323 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Wed, 1 Mar 2017 21:36:16 +0100 Subject: [PATCH] TP 9 exo2: Fix linked list insert helper function. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- TP_9/exo2/clist.c | 30 +++++++++++++++++------------- TP_9/exo2/exo2.c | 6 ++++-- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/TP_9/exo2/clist.c b/TP_9/exo2/clist.c index 2e0352d..a089750 100644 --- a/TP_9/exo2/clist.c +++ b/TP_9/exo2/clist.c @@ -32,24 +32,27 @@ link_t* list_prepend(link_t* head, int value) { } link_t* list_insert(link_t* head, unsigned index, int value) { - link_t* link_insrt = list_new(value); - link_t* head_first = head; - //link_t* head_prev = NULL; - link_t* head_next = NULL; - for (unsigned i = 0; i < index; i++) { - head = head->next; + if (index == 0) { + return list_prepend(head, value); + } else if (index == list_count(head)) { + return list_append(head, value); + } else { + link_t* link_insrt = list_new(value); + link_t* head_first = head; + link_t* head_next = NULL; + for (unsigned i = 0; i < index-1; i++) { + head = head->next; + } + head_next = head->next; + head->next = link_insrt; + head = link_insrt; + head->next = head_next; + return head_first; } - //head_prev = head; - head->next = link_insrt; - head_next = head->next; - head = link_insrt; - head->next = head_next; - return head_first; } link_t* list_delete(link_t* head, unsigned index) { - link_t* head_first = head; link_t* head_prev = NULL; link_t* head_next = NULL; @@ -59,6 +62,7 @@ link_t* list_delete(link_t* head, unsigned index) { head = head_next; return head; } else { + link_t* head_first = head; for (unsigned i = 0; i < index-1; i++) { head = head->next; } diff --git a/TP_9/exo2/exo2.c b/TP_9/exo2/exo2.c index b7dae12..3b62ea4 100644 --- a/TP_9/exo2/exo2.c +++ b/TP_9/exo2/exo2.c @@ -22,11 +22,13 @@ int main() { printf("Valeur a index %d: %d\n", 0, list_get(head, 0)); printf("Valeur a index %d: %d\n", 1, list_get(head, 1)); printf("Valeur a index %d: %d\n", 2, list_get(head, 2)); - //head = list_insert(head, 2, 7); + head = list_insert(head, 2, 7); printf("Valeur a index %d: %d\n", 1, list_get(head, 1)); printf("Valeur a index %d: %d\n", 2, list_get(head, 2)); printf("Valeur a index %d: %d\n", 3, list_get(head, 3)); - head = list_delete(head, 2); + head = list_delete(head, 3); + printf("Valeur a index %d: %d\n", 0, list_get(head, 0)); + printf("Valeur a index %d: %d\n", 1, list_get(head, 1)); printf("Valeur a index %d: %d\n", 2, list_get(head, 2)); printf("Valeur a index %d: %d\n", 3, list_get(head, 3)); printf("Valeur a index %d: %d\n", 4, list_get(head, 4)); -- 2.34.1