--- /dev/null
+#include "src/lib/ll.h"\r
+\r
+void print_list(node_t * head)\r
+{\r
+ node_t * current = head;\r
+\r
+ while (current != NULL)\r
+ {\r
+ printf("%d\n", current->val);\r
+ current = current->next;\r
+ }\r
+}\r
+\r
+void pushe(node_t * head, int val)\r
+{\r
+ node_t * current = head;\r
+ while (current->next != NULL)\r
+ {\r
+ current = current->next;\r
+ }\r
+\r
+ // now we can add a new variable\r
+ current->next = malloc(sizeof(node_t));\r
+ current->next->val = val;\r
+ current->next->next = NULL;\r
+}\r
+\r
+void pushs(node_t ** head, int val)\r
+{\r
+ node_t * new_node;\r
+ new_node = malloc(sizeof(node_t));\r
+\r
+ new_node->val = val;\r
+ new_node->next = *head;\r
+ *head = new_node;\r
+}\r
+\r
+int pop(node_t ** head)\r
+{\r
+ int retval = -1;\r
+ node_t * next_node = NULL;\r
+\r
+ if (*head == NULL) {\r
+ return -1;\r
+ }\r
+\r
+ next_node = (*head)->next;\r
+ retval = (*head)->val;\r
+ free(*head);\r
+ *head = next_node;\r
+\r
+ return retval;\r
+}\r
+\r
+int remove_last(node_t * head)\r
+{\r
+ int retval = 0;\r
+ node_t * current;\r
+\r
+ /* if there is only one item in the list, remove it */\r
+ if (head->next == NULL) {\r
+ retval = head->val;\r
+ free(head);\r
+ return retval;\r
+ }\r
+\r
+ /* get to the last node in the list */\r
+ current = head;\r
+ while (current->next->next != NULL) {\r
+ current = current->next;\r
+ }\r
+\r
+ /* now current points to the last item of the list, so let's remove current->next */\r
+ retval = current->next->val;\r
+ free(current->next);\r
+ current->next = NULL;\r
+ return retval;\r
+\r
+}\r
+\r
+int remove_by_index(node_t ** head, int n)\r
+{\r
+ int i = 0;\r
+ int retval = -1;\r
+ node_t * current = *head;\r
+ node_t * temp_node = NULL;\r
+\r
+ if (n == 0) {\r
+ return pop(head);\r
+ }\r
+\r
+ for (i = 0; i < n-1; i++) {\r
+ if (current->next == NULL) {\r
+ return -1;\r
+ }\r
+ current = current->next;\r
+ }\r
+\r
+ temp_node = current->next;\r
+ retval = temp_node->val;\r
+ current->next = temp_node->next;\r
+ free(temp_node);\r
+\r
+ return retval;\r
+}\r