Concept Flow - Push Using Linked List Node
Create new node
Set new node's next to current head
Update head to new node
Done
This flow shows how a new node is created and added at the start of the linked list by adjusting pointers.
struct Node {
int data;
struct Node* next;
};
void push(struct Node** head_ref, int new_data) {
struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
new_node->data = new_data;
new_node->next = *head_ref;
*head_ref = new_node;
}| Step | Operation | Nodes in List | Pointer Changes | Visual State |
|---|---|---|---|---|
| 1 | Start with empty list | None | head = NULL | NULL |
| 2 | Create new node with data=10 | Node(10) | new_node created | 10 -> NULL |
| 3 | Set new_node->next = head | Node(10) | new_node->next = NULL | 10 -> NULL |
| 4 | Update head to new_node | Node(10) | head = new_node | 10 -> NULL |
| 5 | Create new node with data=20 | Node(20), Node(10) | new_node created | 20 -> NULL |
| 6 | Set new_node->next = head | Node(20), Node(10) | new_node->next = head (Node 10) | 20 -> 10 -> NULL |
| 7 | Update head to new_node | Node(20), Node(10) | head = new_node | 20 -> 10 -> NULL |
| 8 | Create new node with data=30 | Node(30), Node(20), Node(10) | new_node created | 30 -> NULL |
| 9 | Set new_node->next = head | Node(30), Node(20), Node(10) | new_node->next = head (Node 20) | 30 -> 20 -> 10 -> NULL |
| 10 | Update head to new_node | Node(30), Node(20), Node(10) | head = new_node | 30 -> 20 -> 10 -> NULL |
| 11 | End of push operations | Node(30), Node(20), Node(10) | head points to Node(30) | 30 -> 20 -> 10 -> NULL |
| Variable | Start | After Step 2 | After Step 5 | After Step 8 | Final |
|---|---|---|---|---|---|
| head | NULL | NULL | Node(10) | Node(20) | Node(30) |
| new_node | N/A | Node(10) | Node(20) | Node(30) | N/A |
| new_node->next | N/A | NULL | Node(10) | Node(20) | N/A |
Push Using Linked List Node: - Create new node - Set new_node->next to current head - Update head to new_node - New node becomes first element - List grows at front - Head always points to newest node