Stack in Linked List
Stack in Linked List
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
};
if (newNode == NULL) {
printf("Stack Overflow\n");
return top;
// Assign data to the new node and make it the new top
newNode->data = value;
newNode->next = top;
if (top == NULL) {
printf("Stack Underflow\n");
return NULL;
top = top->next;
if (top == NULL) {
printf("Stack is Empty\n");
return -1;
return top->data;
// Main function to take input from the user and perform stack operations
int main() {
while (1) {
// Display menu options
printf("1. Push\n");
printf("2. Pop\n");
printf("3. Peek\n");
printf("5. Exit\n");
scanf("%d", &choice);
switch (choice) {
case 1:
scanf("%d", &value);
break;
case 2:
stack = pop(stack);
break;
case 3:
value = peek(stack);
if (value != -1) {
break;
case 4:
if (isEmpty(stack)) {
printf("Stack is empty\n");
} else {
}
break;
case 5:
printf("Exiting...\n");
exit(0);
default:
return 0;
Output
1. Push
2. Pop
3. Peek
5. Exit
1. Push
2. Pop
3. Peek
5. Exit
1. Push
2. Pop
3. Peek
5. Exit
1. Push
2. Pop
3. Peek
5. Exit
Popped element: 20
1. Push
2. Pop
3. Peek
5. Exit
Pseudo Code
Node Structure
STRUCT Node:
Push Operation
IF newNode is NULL:
RETURN top
END IF
newNode.data ← value
newNode.next ← top
END FUNCTION
Pop Operation
FUNCTION Pop(top):
IF top is NULL:
RETURN NULL
END IF
temp ← top
top ← top.next
END FUNCTION
Peek Operation
FUNCTION Peek(top):
IF top is NULL:
RETURN -1
END IF
RETURN top.data
END FUNCTION
IsEmpty Operation
FUNCTION IsEmpty(top):
END FUNCTION
BEGIN
WHILE True:
INPUT choice
IF choice = 1:
INPUT value
ELSE IF choice = 2:
stack ← Pop(stack)
ELSE IF choice = 3:
value ← Peek(stack)
IF value ≠ -1:
ELSE IF choice = 4:
IF IsEmpty(stack):
ELSE:
ELSE IF choice = 5:
PRINT "Exiting..."
EXIT PROGRAM
ELSE:
END WHILE
END