#include "node.h" #include #include /* Insert after node */ node_t *node_insert(node_t *node, int val) { /* Create new node */ node_t *newNode = (node_t *) malloc( sizeof(node_t) ); if( newNode == NULL ) { return NULL; } newNode->val = val; newNode->prev = node; /* Check if there is node before */ if( node == NULL ) { /* If not then there is no after */ newNode->next = NULL; return newNode; } /* Set next node */ newNode->next = node->next; node->next = newNode; /* Check node after */ if( newNode->next != NULL ) { /* Backlink next node */ newNode->next->prev = newNode; } return newNode; } /* Pop node */ int node_pop(node_t *node) { int val = node->val; /* Check prev */ if( node->prev != NULL ) { /* Point last node to next node */ node->prev->next = node->next; } /* Check next */ if( node->next != NULL ) { node->next->prev = node->prev; } /* Free memory */ free(node); return val; }