aboutsummaryrefslogtreecommitdiff
path: root/src/linked_list.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/linked_list.c16
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;
}