diff options
Diffstat (limited to 'sem3/algo/mm2/linked/node.c')
-rw-r--r-- | sem3/algo/mm2/linked/node.c | 81 |
1 files changed, 40 insertions, 41 deletions
diff --git a/sem3/algo/mm2/linked/node.c b/sem3/algo/mm2/linked/node.c index 21f0993..87f2e4c 100644 --- a/sem3/algo/mm2/linked/node.c +++ b/sem3/algo/mm2/linked/node.c @@ -6,54 +6,53 @@ /* 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; + /* 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; + int val = node->val; - /* Check prev */ - if ( node->prev != NULL ) { - /* Point last node to next node */ - node->prev->next = node->next; - } + /* 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; - } + /* Check next */ + if (node->next != NULL) { + node->next->prev = node->prev; + } - /* Free memory */ - free(node); + /* Free memory */ + free(node); - return val; + return val; } |