diff options
Diffstat (limited to '')
| -rw-r--r-- | src/linked_list.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/linked_list.c b/src/linked_list.c index 2e290e9..6335c3d 100644 --- a/src/linked_list.c +++ b/src/linked_list.c @@ -2,14 +2,11 @@ #include <stdlib.h> LinkedList *linked_list_new(void) { - LinkedList *ll = (LinkedList *)malloc(sizeof(LinkedList)); + /* Note that the members of the linked list + * is initialized to 0 when using calloc() */ + LinkedList *ll = (LinkedList *)calloc(1, sizeof(LinkedList)); if (!ll) return NULL; - - ll->head = NULL; - ll->tail = NULL; - ll->size = 0; - return ll; } @@ -27,19 +24,18 @@ void linked_list_delete(LinkedList *ll) { } LinkedListNode *linked_list_append(LinkedList *ll, void *elem) { - LinkedListNode *new_node = (LinkedListNode *)malloc(sizeof(LinkedListNode)); + LinkedListNode *new_node = calloc(1, sizeof(LinkedListNode)); if (!new_node) return NULL; - new_node->data = elem; - new_node->next = NULL; + if (!ll->head) { new_node->prev = NULL; ll->head = new_node; ll->tail = new_node; } else { - ll->tail->next = new_node; new_node->prev = ll->tail; + ll->tail->next = new_node; ll->tail = new_node; } |