diff options
Diffstat (limited to 'linkedlist/ll.c')
| -rw-r--r-- | linkedlist/ll.c | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/linkedlist/ll.c b/linkedlist/ll.c deleted file mode 100644 index 43bfa27..0000000 --- a/linkedlist/ll.c +++ /dev/null @@ -1,120 +0,0 @@ -// Implementation of a Linked List -#include <stdio.h> -#include <stdlib.h> -#include "ll.h" - -Node* llnode() { - Node* n = (Node*) malloc(sizeof(Node)); - n->value = 0; - n->next = NULL; - return n; -} - -void llprint(Node* head) { - Node* node = head; - printf("[ "); - do { - printf("%i ", node->value); - node = node->next; - } while (node != NULL); - printf("]\n"); -} - -void llvprint(Node* head) { - Node* node = head; - do { - printf("[*] %i\n", node->value); - node = node->next; - printf(" |\n"); - } while (node != NULL); - printf("[/] %p\n", node); -} - -int llcount(Node* head) { - Node* node = head; - int count = 0; - while (node != NULL) { - count++; - node = node->next; - } - return count; -} - -void llappend(Node* head, int value) { - Node* n = head; - while (n->next != NULL) n = n->next; - n->next = NEW_NODE; - n->next->value = value; - n->next->next = NULL; -} - -void llpush(Node** head, int value) { - Node* n = NEW_NODE; - n->value = value; - n->next = *head; - *head = n; -} - -void llinsert(Node** head, int value, int index) { - Node* n = *head; - Node* cur = NULL; - Node* node = NEW_NODE; - int i = 0; - node->value = value; - while (n->next != NULL && i < index) { - cur = n; - n = n->next; - ++i; - } - cur->next = node; - node->next = n; -} - -void llfree(Node* head) { - Node* n = NULL; - while (head != NULL) { - n = head; - head = head->next; - free(n); - } -} - -int llpop(Node** head) { - Node* n = *head; - int val = n->value; - *head = n->next; - free(n); - return val; -} - -int llrmlast(Node** head) { - Node* n = *head; - Node* cur = NEW_NODE; - 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 = NEW_NODE; - Node* node = NEW_NODE; - int i = 0; - int val = 0; - while (n->next != NULL && i < index) { - cur = n; - n = n->next; - ++i; - } - cur->next = n->next; - node->next = n; - val = n->value; - free(n); - return val; -} - |
