1 #include "src/lib/ll.h"
\r
3 void print_list(node_t * head)
\r
5 node_t * current = head;
\r
7 while (current != NULL)
\r
9 printf("[%u] %d\n", current->id, current->val);
\r
10 current = current->next;
\r
14 void pushe(node_t * head, int val)
\r
16 node_t * current = head;
\r
17 current->id = head->id;
\r
18 current->next->id = current->id+1;
\r
20 while (current->next != NULL)
\r
22 current->next->id = current->id;
\r
23 current = current->next;
\r
27 // now we can add a new variable
\r
28 current->next = malloc(sizeof(node_t));
\r
29 current->next->val = val;
\r
30 current->next->next = NULL;
\r
31 current->next->id++;
\r
34 void pushs(node_t ** head, int val)
\r
37 new_node = malloc(sizeof(node_t));
\r
39 new_node->val = val;
\r
40 new_node->next = *head;
\r
44 int pop(node_t ** head)
\r
47 node_t * next_node = NULL;
\r
49 if (*head == NULL) {
\r
53 next_node = (*head)->next;
\r
54 retval = (*head)->val;
\r
61 int remove_last(node_t * head)
\r
66 /* if there is only one item in the list, remove it */
\r
67 if (head->next == NULL) {
\r
73 /* get to the last node in the list */
\r
75 while (current->next->next != NULL) {
\r
76 current = current->next;
\r
79 /* now current points to the last item of the list, so let's remove current->next */
\r
80 retval = current->next->val;
\r
81 free(current->next);
\r
82 current->next = NULL;
\r
87 int remove_by_index(node_t ** head, int n)
\r
91 node_t * current = *head;
\r
92 node_t * temp_node = NULL;
\r
98 for (i = 0; i < n-1; i++) {
\r
99 if (current->next == NULL) {
\r
102 current = current->next;
\r
105 temp_node = current->next;
\r
106 retval = temp_node->val;
\r
107 current->next = temp_node->next;
\r