diff options
Diffstat (limited to 'src/ll.c')
| -rw-r--r-- | src/ll.c | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/src/ll.c b/src/ll.c deleted file mode 100644 index ef5e021..0000000 --- a/src/ll.c +++ /dev/null @@ -1,119 +0,0 @@ -// Implementation of a Linked List -// -// TODO: recursive implementation for llfree -// - -#include <stdio.h> -#include <stdlib.h> -#include "ll.h" - -Node* llnode(int value) { - Node* n = (Node*) malloc(sizeof(Node)); - n->value = value; - n->next = NULL; - return n; -} - -void llprint(Node* head) { - Node* node = head; - printf("[ "); - while (node != NULL) { - printf("%i ", node->value); - node = node->next; - } - printf("]\n"); - free(node); -} - -void llvprint(Node* head) { - Node* node = head; - while (node != NULL) { - printf("[*] %i\n", node->value); - node = node->next; - printf(" |\n"); - } - printf("[/] %s\n", (char*) node); -} - -int lllength(Node* head) { - Node* n = head; - int i = 0; - for (; n != NULL; ++i) n = n->next; - return i; -} - -void llpush(Node** head, int value) { - Node* n = llnode(value); - n->next = *head; - *head = n; -} - -int llpop(Node** head) { - int val = (*head)->value; - *head = (*head)->next; - return val; -} - -void llappend(Node* head, int value) { - Node* n = head; - while (n->next != NULL) n = n->next; - n->next = llnode(value); -} - -void llinsert(Node** head, int value, int index) { - Node* n = *head; - Node* cur = NULL; - Node* node = llnode(value); - int i = 0; - while (n->next != NULL && i < index) { - cur = n; - n = n->next; - ++i; - } - cur->next = node; - node->next = n; -} - -void llfree(Node** head) { - while (*head != NULL) { - Node* n = *head; - *head = (*head)->next; - free(n); - } - *head = NULL; -} - -int llrmlast(Node** head) { - Node* n = *head; - Node* cur = NULL; - while (n->next != NULL) { - cur = n; - n = n->next; - } - int val = n->value; - cur->next = NULL; - free(n); - return val; -} - -int llrm(Node** head, int index) { - Node* n = *head; - Node* cur = NULL; - if (index == -1) { - while (n->next != NULL) { - cur = n; - n = n->next; - } - } else { - int i = 0; - while (n->next != NULL && i < index) { - cur = n; - n = n->next; - ++i; - } - } - cur->next = n->next; - int val = n->value; - free(n); - return val; -} |
