DS – Stack Program using Linked List

#include<stdio.h>
#include <stdlib.h>
struct node
{
    int data;
    struct node* link;
};
struct node *top;
void push();
void pop(void);
void traverse(void);
void main(void)
{
            int ch , ele;
            while(1)
            {
                        printf(“1.Push \n”);
                        printf(“2.Pop \n”);
                        printf(“3.Traverse \n”);
                        printf(“4.Quit \n”);
                        printf(“Enter choice : “);
                        scanf(“%d”, &ch);
                        switch(ch)
                        {
                                    case 1    :         push();
                                                            break ;
                                    case 2    :         pop();
                                                            break;
                                    case 3    :         traverse();
                                                            break;
                                    case 4    :         exit(1);
                                    default   :         printf(“Invalid choice\n\n”);
                        }
            }
}
void push()
{
            struct node*temp=(struct node*)malloc(sizeof(struct node));
            if(temp==NULL)
                        printf(“No memory\n\n”);
            else
            {
                        printf(“Enter element to push :”);
                        scanf(“%d”,&temp->data);
                        temp->link=top;
                        top=temp;
            }
}
void pop(void){
            if(top == NULL)
                        printf(“Stack is underflow\n\n”);
            else
            {
                        struct node* temp=top;
                        top=temp->link;
                        temp->link=NULL;
                        printf(“Element popped is :%d\n\n”,temp->data);
                        free(temp);
            }
}
void traverse(void)
{
            if(top==NULL)
            {
                        printf(“Stack is empty\n\n”);
            }
            else
            {
                        struct node* temp=top;
                        while(temp!=NULL)
                        {
                                    printf(“%d\n”,temp->data);
                                    temp=temp->link;
                        }
            }
}
Scroll to Top