stack by using linklist

#include <stdio.h>
#include <stdlib.h>
struct node
{
  int data;
  struct node *next;
};
typedef struct node Node;
void push(Node ** ptr,int data);
void Display(Node *ptr);
void pop(Node **ptr);
int main()
{
    Node *head=NULL;
    printf("Enter 1 for display list,2 for push element in stack\n");
    printf("Enter 3 for pop\n");
    int choice;
    while(1)
    {
      printf("Enter choice:");
      scanf("%d",&choice);
      if(choice<1)
      {
          break;
      }
      else
      {
          switch(choice)
          {
          case 1:
            {
               Display(head);
               break;
            }
          case 2:
            {
                int data;
               printf("Enter data to push in stack:");
               scanf("%d",&data);
               push(&head,data);
               break;
            }
          case 3:
            {
               pop(&head);
               break;
            }
          default :
            {
              printf("Entered number is not valid\n");
            }
          }
      }
    }
    return 0;
}
void push(Node ** ptr,int data)
{
  Node *n=(Node*)malloc(sizeof(Node));
  n->data=data;
  n->next==NULL;
  Node *r=*ptr;
  if(*ptr==NULL)
  {
    *ptr=n;
  }
  else
  {
    n->next=r;
    *ptr=n;
  }
}
void Display(Node *ptr)
{
  if(ptr==NULL)
  {
    printf("Stack is empty\n");
  }
  else
  {
    while(ptr!=NULL)
    {

      printf("%d\n",ptr->data);
      ptr=ptr->next;
    }
    printf("\n");
  }
}
void pop(Node **ptr)
{
    Node *n=*ptr;
    if(*ptr==NULL)
    {
        printf("Stack is empty\n");
    }
    else
    {
        printf("Element pop is %d\n",n->data);
        *ptr=n->next;
        free(n);
    }
}


Post a Comment

0 Comments