logo

Adding at the beginning of a linked list

#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct Node { int x; struct Node* next; } Node; void deallocate(Node** root) { Node* curr = *root; while (curr != NULL) { Node* aux = curr; curr = curr->next; free(aux); } *root = NULL; } void insert_beginning(Node** root, int value) { Node* new_node = malloc(sizeof(int)); if (new_node == NULL) { exit(3); } new_node->x = value; new_node->next = *root; *root = new_node; } void insert_end(Node** root, int value) { Node* new_node = malloc(sizeof(Node)); if (new_node == NULL) { exit(1); } new_node->next = NULL; new_node->x = value; if (*root == NULL) { *root = new_node; return; } Node* curr = *root; while (curr->next != NULL) { curr = curr->next; } curr->next = new_node; } int main(int argc, char* argv[]) { Node* root = NULL; insert_end(&root, -2); insert_end(&root, 11); insert_end(&root, 22); insert_beginning(&root, 50); insert_beginning(&root, 17); for (Node* curr = root; curr != NULL; curr = curr->next) { printf("%d\n", curr->x); } deallocate(&root); return 0; }
Course thumb

The C programming language made simple