Saturday, April 23, 2011

Queue Double (can insert through both end)

#include "conio.h"
#include "stdio.h"
#include "stdlib.h"

typedef struct q
{
int info;
struct q *next;
} queue;

queue *rear, *front;

int main(void)
{
int ch, n;
clrscr();
while(1)
{
clrscr();
f_disp(front);
printf("\n1. Enqueue rear\n2. Enqueue Front\n3. Dequeue front\n4. Dequeue rear\n5. Display\n6. Exit");
printf("\nEnter your choice : ");
scanf("%d",&ch);
switch(ch)
{
case 1: n = getinput();
enqueue_rear(rear,n);
break;
case 2: n = getinput();
enqueue_front(front, n);
break;
case 3: dequeue_front(front);
break;
case 4: dequeue_rear(front);
break;
case 5: disp(front);
break;
case 6: exit(0);
default: printf("Invalid choice.\nPlease enter 1 - 6\n");
getch();
}
}
}

int getinput()
{
int n;
printf("Enter the new info : ");
scanf("%d",&n);
return n;
}

enqueue_rear(queue *s, int n)
{
queue *temp;
temp = (queue *)malloc(sizeof(queue));
temp->info = n;
temp->next = NULL;
rear = temp;
if(s==NULL)
front = temp;
else
s->next = temp;
}

enqueue_front(queue *s, int n)
{
queue *temp;
temp = (queue *)malloc(sizeof(queue));
temp->info = n;
temp->next = s;
front = temp;
if(s == NULL)
rear = temp;
}

dequeue_front(queue *s)
{
int n;
if(s!=NULL)
{
n = s->info;
front = s->next;
if(s->next == NULL)
rear = NULL;
free(s);
return n;
}
else
{ clrscr();
printf("\n\n\t\tQueue underflow...");
getch();
return -1;
}
getch();
}

dequeue_rear(queue *s)
{
queue *p;
int n;
if(s == NULL)
{
clrscr();
printf("\n\n\t\tQueue Underflow...");
getch();
return -1;
}
if(s == rear)
{
n = s->info;
front = rear = NULL;
free(s);
}
else
{
for(; (s->next)->next!=NULL;s=s->next);
n = rear->info;
free(rear);
}
s->next = NULL;
rear = s;
return n;
}


disp(queue *s)
{
clrscr();
if(s!=NULL)
{
printf("Items in queue : \n\t");
while(s!=NULL)
{
printf("\n\t\t%5d ",s->info);
s = s->next;
}
}
else
printf("No item in queue.");
getch();
}

f_disp(queue *s)
{
if(s!=NULL)
{
printf("Items in queue : \n\t");
while(s!=NULL)
{
printf("%d, ",s->info);
s = s->next;
}
}
else
printf("No item in queue.");
}

0 comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites