#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int x;
struct Node *next;
} Node;
void add_after(Node *node, int value) {
Node* new_node = malloc(sizeof(Node));
if (new_node == NULL) {
puts("malloc error");
exit(1);
}
new_node->x = value;
new_node->next = node->next;
node->next = new_node;
}
void add_node(Node **root, int value) {
Node *new_node = malloc(sizeof(Node));
if (new_node == NULL) {
puts("malloc error");
exit(1);
}
new_node->next = NULL;
new_node->x = value;
if (*root == NULL) {
*root = new_node;
return;
}
Node* current = *root;
while (current->next != NULL) {
current = current->next;
}
current->next = new_node;
}
void free_LinkedList(Node *root) {
Node *next;
while (root != NULL) {
next = root->next;
free(root);
root = next;
}
}
int main() {
Node *root = NULL;
add_node(&root, 7);
add_node(&root, 3);
add_node(&root, 78);
add_node(&root, 200);
for (Node *current = root; current != NULL; current = current->next) {
printf("%d\n", current->x);
}
add_after(root, 1000);
puts("\n");
for (Node *current = root; current != NULL; current = current->next) {
printf("%d\n", current->x);
}
add_after(root->next, 9);
puts("\n");
for (Node *current = root; current != NULL; current = current->next) {
printf("%d\n", current->x);
}
free_LinkedList(root);
return 0;
}
/*
run:
7
3
78
200
7
1000
3
78
200
7
1000
9
3
78
200
*/