Showing posts with label Stack. Show all posts
Showing posts with label Stack. Show all posts

Sunday 21 February 2021

C Program to search for a data in Stack

     The Linked List data structure is the best way to implement Stack operations. This program has a search function to which the data to be searched is passed as an argument. All the nodes are traversed to check whether the given data is present in any node.


Program

//Stack using Linked list

#include<stdio.h>

#include<conio.h>

struct node

{

 struct node *next;

 int data;

}*head,*temp;


void push()

{

 struct node *newnode;

 newnode=(struct node *)malloc(sizeof(struct node));

 printf("Enter the data\t");

 scanf("%d",&newnode->data);

 if(head==NULL)

 {

  head=newnode;

  head->next=NULL;

 }

 else

 {

  newnode->next=head;

  head=newnode;

  }

}

void pop()

{

 if(head==NULL)

 {

  printf("Empty stack\n");

 }

 else

 {

  printf("The popped element is ");

  temp=head;

  head=head->next;

  printf("%d",temp->data);

  free(temp);

 }

}

void display()

{

 if(head==NULL)

 {

  printf("Empty stack\n");

 }

 else

 {

  temp=head;

  while(temp!=NULL)

  {

   printf("%d->",temp->data);

   temp=temp->next;

  }

 }

}

int search(int k)

{

 if(head==NULL)

 {

  printf("Empty stack\n");

 }

 else

 {

  temp=head;

  while(temp!=NULL)

  {

   if (temp->data==k)

     return 1;

   temp=temp->next;

  }

  }

  return 0;

}


main()

{

     int ch,k;

     void push();

     void pop();

     void display();

    int search(int);

     clrscr();

      do

      {

           printf("\n1.Push\n");

          printf("2.Pop\n");

          printf("3.Display\n");

          printf("4. Search\n");

          printf("Enter the choice\t");

          scanf("%d",&ch);

          switch(ch)

          {

               case 1:push();

                            break;

               case 2:pop();

                            break;

               case 3:display();

                            break;

               case 4: printf("Enter the data to be searched ");

                   scanf("%d",&k);

                   if (search(k))

                        printf("The searched data is present in the stack");

                   else

                        printf("The searched data not present in the stack");

                   break;

               default:exit(0);

          }

     }while(1);

}

OUTPUT

1.Push                                                                       

2.Pop                                                                           

3.Display                                                                       

4. Search                                                                       

Enter the choice        3                                                       

3->2->1->                                                                       

1.Push                                                                          

2.Pop                                                                           

3.Display                                                                       

4. Search                                                                       

Enter the choice        4                                                       

Enter the data to be searched 2                                                 

The searched data is present in the stack                                       

1.Push                                                                          

2.Pop                                                                           

3.Display                                                                       

4. Search                                                                       

Enter the choice        4                                                       

Enter the data to be searched 7                                                 

The searched data not present in the stack                                      

1.Push                                                                          

2.Pop                                                                           

3.Display                                                                       

4. Search                                                                       

Enter the choice        5                                                       


Sunday 12 March 2017

C program to implement stack using arrays

Stack is a data structure to which the elements are inserted and deleted in the Last In First Out (LIFO). Stack has many applications like arithmetic expression evaluation, subroutine handling, interrupt handling, recursion call implementation etc.. Stack can be implemented statically using arrays or a dynamic stack implementation using Linked list. The following program shows how to implement stack operations using array.

//Program to implement stack using array
#include<stdio.h>
#include<conio.h>
#define size 5

int stack[size],top=-1;

main()
{
 int ch;
 int a;
 void push(int,int *);
 int pop(int *);
 void display();
 clrscr();

 do
 {
  printf("\n1.push\t");
  printf("2.pop\t");
  printf("3.display\t");
  printf("Enter the choice\t");
  scanf("%d",&ch);
  switch(ch)
  {
   case 1: printf("\nEnter the number to be pushed: ");
  scanf("%d",&a);
  push(a,stack);
  break;
   case 2: pop(stack);
  break;
   case 3: display();
  break;
   default: exit(0);
   }
  }while(ch<4);
 getch();
}
void push(int a,int *stack)
{
 if(top>=size)
  {
   printf("Stack overflow\n");
  }
  else
  {
   top++;
   stack[top]=a;
  }
}
int pop(int *stack)
 {
  int temp;
  if(top==-1)
  {
   printf("\nStack Empty\n");
  }
  else
  {
   printf("The popped element is\t");
   {
    temp=stack[top];
    top--;
    printf("%d\n",temp);
    return(temp);
   }
  }
 }
 void display()
 {
  int i;
  if(top==-1)
  {
   printf("Stack underflow\n");
  }
  else
  {
   printf("\nThe contents of the stack are \t");
   for(i=0;i<=top;i++)
   {
    printf("%d\t",stack[i]);
   }
   printf("\n");
  }
 }

/*
OUTPUT
-------

Enter the number to be pushed: 1

1.push  2.pop   3.display       Enter the choice        1

Enter the number to be pushed: 2

1.push  2.pop   3.display       Enter the choice        1

Enter the number to be pushed: 3

1.push  2.pop   3.display       Enter the choice        1

Enter the number to be pushed: 4

1.push  2.pop   3.display       Enter the choice        1

Enter the number to be pushed: 5

1.push  2.pop   3.display       Enter the choice        3

The contents of the stack are   1       2       3       4       5

1.push  2.pop   3.display       Enter the choice        1

Enter the number to be pushed: 6

1.push  2.pop   3.display       Enter the choice        1

Enter the number to be pushed: 7
Stack overflow

1.push  2.pop   3.display       Enter the choice        3

The contents of the stack are   1       2       3       4       5       6


1.push  2.pop   3.display       Enter the choice        2
The popped element is   6

1.push  2.pop   3.display       Enter the choice        2
The popped element is   5

1.push  2.pop   3.display       Enter the choice        2
The popped element is   4

1.push  2.pop   3.display       Enter the choice        4
*/