Concept Flow - Stack Using Linked List vs Array Stack Trade-offs
Start Operation
Choose Stack Type
Array Stack
Check Capacity
Push
Update Top
Done
Shows the decision and steps for push operation in array stack vs linked list stack.
void pushArray(int stack[], int *top, int capacity, int val) { if (*top == capacity - 1) return; // full stack[++(*top)] = val; } void pushLinkedList(Node **head, int val) { Node *newNode = malloc(sizeof(Node)); newNode->data = val; newNode->next = *head; *head = newNode; }
| Step | Operation | Stack Type | Pointer Changes | Visual State |
|---|---|---|---|---|
| 1 | Start push 10 | Array Stack | top= -1 | [] (empty) |
| 2 | Check capacity | Array Stack | top= -1 | [] (empty) |
| 3 | Push 10 | Array Stack | top=0 | [10] |
| 4 | Start push 20 | Array Stack | top=0 | [10] |
| 5 | Check capacity | Array Stack | top=0 | [10] |
| 6 | Push 20 | Array Stack | top=1 | [10, 20] |
| 7 | Start push 30 | Linked List Stack | head=NULL | NULL |
| 8 | Allocate node | Linked List Stack | newNode->data=30 | NULL |
| 9 | Update head | Linked List Stack | head=newNode | 30 -> NULL |
| 10 | Start push 40 | Linked List Stack | head=30 | 30 -> NULL |
| 11 | Allocate node | Linked List Stack | newNode->data=40 | 30 -> NULL |
| 12 | Update head | Linked List Stack | head=newNode | 40 -> 30 -> NULL |
| 13 | Attempt push beyond capacity | Array Stack | top=1 | [10, 20] (full) |
| 14 | Reject push | Array Stack | top=1 | [10, 20] (full) |
| Variable | Start | After Step 3 | After Step 6 | After Step 9 | After Step 12 | After Step 14 |
|---|---|---|---|---|---|---|
| top | -1 | 0 | 1 | 1 | 1 | 1 |
| stack | [] | [10] | [10, 20] | [10, 20] | [10, 20] | [10, 20] |
| head | NULL | NULL | NULL | 30 -> NULL | 40 -> 30 -> NULL | 40 -> 30 -> NULL |
Stack Push Operation Trade-offs: - Array Stack: fixed size, uses 'top' index, push fails if full. - Linked List Stack: dynamic size, uses 'head' pointer, push allocates new node. - Array stack is memory efficient but limited. - Linked list stack uses more memory but flexible size. - Choose based on need for fixed or dynamic capacity.