reverse queue using stack

#include<stdio.h>
#include<conio.h>
# define size 10
void endque(struct queue *q);
void reverse(struct queue *q);
void display(struct queue q);
struct queue
{
 int f;
 int r;
 int tos;
 int arr[size];
 int stack[size];
};
void main()
{
 struct queue q;

int choice,ch;
q.f=-1;
q.r=-1;
q.tos=-1;
do
{

printf("\n1.make the queue");
printf("\n2.diplay queue");
printf("\n3.reverse queue");
printf("\n\n\nenter your choice :: ");
scanf("%d",&choice);
switch(choice)
{
case 1:
    endque(&q);
    break;
case 2:
    display(q);
    break;
case 3:
    reverse(&q);
    break;
default:
 printf("invalid choice");
 break;
}
printf("\n\ndo you want to continue so enter(1) :: ");
scanf("%d",&ch);
}while(ch==1);
getch();
}
void endque(struct queue *q)
{ 
 int val;
 printf("\n enter value :: ");
    scanf("%d",&val);
 if(q->r==size-1)
 {
  printf("\n queue is full");
 }
 else if(q->f==-1 && q->r==-1)
 {
  q->f++;
  q->r++;
  q->arr[q->r]=val;
 }
 else
 {
  q->r++;
  q->arr[q->r]=val;
 }
 
}
void display(struct queue q)
{  
 int temp;
 temp=q.f;
 if(q.f==-1 || q.r==-1 || q.f>q.r)
 {
  printf("\n queue is empty\n");
 }
 else
 {   
  printf("\n");
  while(temp<=q.r)
  {
   printf("\n%d\n",q.arr[temp]);
   temp++;
  }
  
 }
 if(q.tos==-1)
 {
  printf("\n queue is not reverse\n");
 }
 else
 { 
  printf("\n queue is reverse\n");
  while(q.tos!=-1)
  {
    printf("\n%d",q.stack[q.tos]);
    q.tos--;

  }
 }
}

void reverse(struct queue *q)
{

 int temp1;
 temp1=q->f;
 if(temp1==-1 && q->r==-1)
 {
  printf("\n queue empty");
 }
 else
 {   while(temp1<=q->r)
     {
    
        
      q->tos++;        
      q->stack[q->tos]=q->arr[temp1];   
      temp1++;
     
     }
     printf("\n queue is reverse \n");     
 }

}

***********************************************************************************************************************
------------------------------------------------------------------------

         output

------------------------------------------------------------------------

1.make the queue
2.diplay queue
3.reverse queue


enter your choice :: 1

 enter value :: 10


do you want to continue so enter(1) :: 1

1.make the queue
2.diplay queue
3.reverse queue


enter your choice :: 20
invalid choice

do you want to continue so enter(1) :: 1

1.make the queue
2.diplay queue
3.reverse queue


enter your choice :: 1

 enter value :: 20


do you want to continue so enter(1) :: 1

1.make the queue
2.diplay queue
3.reverse queue


enter your choice :: 1

 enter value :: 30


do you want to continue so enter(1) :: 1

1.make the queue
2.diplay queue
3.reverse queue


enter your choice :: 2


10

20

30

 queue is not reverse


do you want to continue so enter(1) :: 1

1.make the queue
2.diplay queue
3.reverse queue


enter your choice :: 3

 queue is reverse


do you want to continue so enter(1) :: 1

1.make the queue
2.diplay queue
3.reverse queue


enter your choice :: 2


10

20

30

 queue is reverse

30
20
10

do you want to continue so enter(1) ::

***************************************************************************************************************************************
SHARE

Milan Tomic

Hi. I’m Designer of Blog Magic. I’m CEO/Founder of ThemeXpose. I’m Creative Art Director, Web Designer, UI/UX Designer, Interaction Designer, Industrial Designer, Web Developer, Business Enthusiast, StartUp Enthusiast, Speaker, Writer and Photographer. Inspired to make things looks better.

  • Image
  • Image
  • Image
  • Image
  • Image
    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment