X-Git-Url: https://git.piment-noir.org/?p=TD_C.git;a=blobdiff_plain;f=TP_9%2Fexo2%2Fclist.c;h=a089750ff01ae755ccd5e6f8c21f7b091a245107;hp=2e0352de109dfede2612bc175e0a6e9ab85c4c63;hb=3de00528618f48f669d1b2ff673fd1370cdf5323;hpb=8f2b28438cb012169904a7fa1643977da5e40409 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; }