C Tutorial
A stack is a data structure in which addition of new element or deletion of existing element are always take place at the top of the stack.
Last In First Out (LIFO).
Linked list are not stored in adjacent locations and array occupy continuous locations.
#include<stdio.h> //structure contains data and link struct node { int data; struct node *link; }; //Adding element in the stack on top void push(struct node **top, int data) { struct node *temp; temp = malloc( sizeof (struct node)); temp->data = data; temp->link =*top; *top = temp; } // displays the stack elements from top void display(struct node *head) { printf("\n"); // traversing entire linked list printf("\ntop==>"); while(head != NULL) { printf("%d-->", head->data); head = head->link; } printf("bottom\n"); } // finds the number of elements in the stack int count(struct node *head) { int c = 0; while(head != NULL) { head = head->link; c++; } return c; } // deletes the top element in stack int pop(struct node **top) { int data; struct node *old, *temp; if(*top == NULL) { printf("\ntop is empty!"); } else { temp = *top; data = temp->data; *top = temp->link; free(temp); return data; } return 0; } void main() { int op, data; struct node *top; // Empty top top = NULL; printf("\nNumber of elements in the top: %d", count(top)); push(&top, 1); push(&top, 2); push(&top, 3); display(top); printf("\nNumber of elements in the top: %d", count(top)); do { printf("\nStack\n---------------\n1.push \n2.pop\n3.display\n4.count\n0.exit"); printf("\nEnter choice: "); scanf("%d", &op); switch(op) { case 1: printf("\nEnter element: "); scanf("%d", &data); push(&top, data); break; case 2: printf("popped up: %d", pop(&top)); break; case 3: display(top); break; case 4: printf("\nNumber of elements in the linked list: %d", count(top)); break; } }while(op>=1 && op<=4); }$ cc stack.c stack.c: In function ‘push’: stack.c:14:12: warning: implicit declaration of function ‘malloc’ [-Wimplicit-function-declaration] temp = malloc( sizeof (struct node)); ^~~~~~ stack.c:14:12: warning: incompatible implicit declaration of built-in function ‘malloc’ stack.c:14:12: note: include ‘
$ ./a.out Number of elements in the top: 0 top==>3-->2-->1-->bottom Number of elements in the top: 3 Stack --------------- 1.push 2.pop 3.display 4.count 0.exit Enter choice: 1 Enter element: 3 Stack --------------- 1.push 2.pop 3.display 4.count 0.exit Enter choice: 3 top==>3-->3-->2-->1-->bottom Stack --------------- 1.push 2.pop 3.display 4.count 0.exit Enter choice: 4 Number of elements in the linked list: 4 Stack --------------- 1.push 2.pop 3.display 4.count 0.exit Enter choice: 2 popped up: 3 Stack --------------- 1.push 2.pop 3.display 4.count 0.exit Enter choice: 3 top==>3-->2-->1-->bottom Stack --------------- 1.push 2.pop 3.display 4.count 0.exit Enter choice: 1 Enter element: 5 Stack --------------- 1.push 2.pop 3.display 4.count 0.exit Enter choice: 3 top==>5-->3-->2-->1-->bottom Stack --------------- 1.push 2.pop 3.display 4.count 0.exit Enter choice: 0
C Tutorial
Privacy Policy | Copyright2020 - All Rights Reserved. | Contact us
| Report website issues in Github
| Facebook page
| Google+ page