diff --git a/ds.c b/ds.c index a491144..53ef37b 100644 --- a/ds.c +++ b/ds.c @@ -92,27 +92,22 @@ void return NULL; } - for (i = -1, cur = *ll; cur; i++, cur = cur->next) { - if (i + 1 == idx) { - if (idx == 0) { - rm = cur; - if (!rm) { - return NULL; - } - *ll = cur->next; - } else { + if (idx == 0) { + rm = *ll; + *ll = rm->next; + } else { + for (i = -1, cur = *ll; cur; i++, cur = cur->next) { + if (idx == i + 1) { rm = cur->next; - if (!rm) { - return NULL; - } - cur->next = cur->next->next; + break; } - break; } - } - if (!rm) { - return NULL; + if (!rm) { + return NULL; + } + + cur->next = rm->next; } data = rm->data; @@ -132,33 +127,28 @@ void return NULL; } - for (i = -1, cur = *ll; cur; i++, cur = cur->next) { - if (i + 1 == idx) { - if (idx == 0) { - rm = cur; - if (!rm) { - return NULL; - } - if (cur->next) { - cur->next->prev = NULL; - *ll = cur->next; - } - } else { - rm = cur->next; - if (!rm) { - return NULL; - } - cur->next = cur->next->next; - if (cur->next) { - cur->next->prev = cur; - } - } - break; + if (idx == 0) { + rm = *ll; + *ll = rm->next; + if (rm->next) { + rm->next->prev = NULL; + } + } else { + for (i = 0, cur = *ll; cur; i++, cur = cur->next) { + if (i == idx) { + rm = cur; + break; + } } - } - if (!rm) { - return NULL; + if (!rm) { + return NULL; + } + + rm->prev->next = rm->next; + if (rm->next) { + rm->next->prev = rm->prev; + } } data = rm->data;