Monday, November 4, 2013

Linked List Using C

Linked List Using C

#include<stdio.h>
#include<conio.h>
#include<process.h>
#include<stdlib.h>
#include<alloc.h>

void Push(int , node **);
void Display(node **);
int Pop(node **);
int Sempty(node *);

typedef struct stack
{
    int    data;
    struct stack *next;
}node;

//---------------------------------
void main ( )
{
node *top;
int data,item,choice;
char ans,ch;

clrscr();

top = NULL;

printf("nStack Using Linked List : nn");
  do
  {
  printf("nn The main menu");
  printf("n1.Pushn2.Popn3.Displayn4.Exit");
  printf("n Enter Your Choice");
  scanf("%d",&choice);

    switch(choice)
    {
    case 1:
        printf("n Enter the data");
        scanf("%d",&data);
        Push(data,&top);
        break;
    case 2:
        if(Sempty(top))
            printf("n stack underflow!");
        else
            {
            item = Pop(&top);
            printf("n The popped node is%d",item);
            }
        break;
    case 3:
        Display(&top);
        break;
    case 4:
        printf("n Do You want To Quit?(y/n)");
        ch=getche();
          if(ch=='y')
               exit(0);
          else
               break;
    }

    printf("n Do you want to continue?");
    ans =getche();
    getch();
    clrscr();
 }while(ans =='Y' ||ans =='y');
 getch();
}
//---------------------------------
void Push(int Item, node **top)
 {
 node *New;
 node * get_node(int);
 New = get_node(Item);
 New -> next = *top;
 *top = New;
 }
//---------------------------------
node * get_node( int item )
 {
 node * temp;
 temp =(node *) malloc(sizeof(node) );
 if ( temp == NULL )
    printf("nMemory Cannot be allocated");
 temp -> data = item;
 temp -> next = NULL;
 return( temp);
 }
//---------------------------------
int Sempty(node *temp)
 {
 if(temp ==NULL)
    return 1;
 else
    return 0;
}
//---------------------------------
int Pop(node **top)
 {
 int item;
 node *temp;
 item = (*top) ->data;
 temp = *top;
 *top = (*top) -> next;
 free(temp);
 return(item);
}
//---------------------------------
void Display(node **head )
{
 node *temp ;
 temp = *head;
 if(Sempty(temp))
     printf("n The stack is empty!");
 else
     {
    while ( temp != NULL )
         {
        printf("%dn",temp-> data);
        temp = temp -> next;
        }
    }
 getch();
 }

No comments: