Concept Flow - Push Using Linked List Node
Create new node with data
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;
Node* next;
};
void push(Node*& head, int val) {
Node* newNode = new Node{val, head};
head = newNode;
}| Step | Operation | Nodes in List | Pointer Changes | Visual State |
|---|---|---|---|---|
| 1 | Start with empty list | None | head = nullptr | head -> null |
| 2 | Create new node with data=10 | Node(10) | newNode->data=10, newNode->next=nullptr | head -> null |
| 3 | Set newNode->next = head (nullptr) | Node(10) | newNode->next = nullptr | head -> null |
| 4 | Update head = newNode | Node(10) | head points to newNode | head -> 10 -> null |
| 5 | Create new node with data=20 | Node(10) | newNode->data=20, newNode->next=nullptr | head -> 10 -> null |
| 6 | Set newNode->next = head (Node(10)) | Node(20) -> Node(10) | newNode->next = head | head -> 10 -> null |
| 7 | Update head = newNode | Node(20) -> Node(10) | head points to newNode | head -> 20 -> 10 -> null |
| 8 | Create new node with data=30 | Node(20) -> Node(10) | newNode->data=30, newNode->next=nullptr | head -> 20 -> 10 -> null |
| 9 | Set newNode->next = head (Node(20)) | Node(30) -> Node(20) -> Node(10) | newNode->next = head | head -> 20 -> 10 -> null |
| 10 | Update head = newNode | Node(30) -> Node(20) -> Node(10) | head points to newNode | head -> 30 -> 20 -> 10 -> null |
| 11 | End of push operations | Node(30) -> Node(20) -> Node(10) | head points to Node(30) | head -> 30 -> 20 -> 10 -> null |
| Variable | Start | After Step 2 | After Step 4 | After Step 5 | After Step 7 | After Step 8 | After Step 10 | Final |
|---|---|---|---|---|---|---|---|---|
| head | nullptr | nullptr | Node(10) | Node(10) | Node(20) | Node(20) | Node(30) | Node(30) |
| newNode | undefined | Node(10) | Node(10) | Node(20) | Node(20) | Node(30) | Node(30) | Node(30) |
| newNode->next | undefined | nullptr | nullptr | Node(10) | Node(10) | Node(20) | Node(20) | Node(20) |
Push Using Linked List Node: - Create new node with data - Set newNode->next to current head - Update head to newNode - New node becomes first in list - Works even if list is empty
push operation do in a linked list when using nodes?new Node(data) to allocate memory and initialize node.newNode->next = head and then head = newNode to push at front.struct Node {
int data;
Node* next;
Node(int val) : data(val), next(nullptr) {}
};
Node* head = nullptr;
// Push 10
Node* newNode1 = new Node(10);
newNode1->next = head;
head = newNode1;
// Push 20
Node* newNode2 = new Node(20);
newNode2->next = head;
head = newNode2;
// Push 30
Node* newNode3 = new Node(30);
newNode3->next = head;
head = newNode3;
// Print list
Node* temp = head;
while(temp != nullptr) {
std::cout << temp->data << " -> ";
temp = temp->next;
}
std::cout << "null";void push(Node* head, int data) {
Node* newNode = new Node(data);
newNode->next = head;
head = newNode;
}Pass the test and this pattern moves unknown