Queue is a FIFO structure. FIFO means first in first out. For queue, there is a front and a back just like linked list has head and tail. Its just like a physical queue, one ends through the back and leaves from the front. Without much ado, Here is a C program for queue:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 100
int count=0;
typedef struct node{
int value;
struct queue *next;
struct queue *prev;
}queue;
queue *front=NULL;
queue *back=NULL;
queue *createnode(int a)
{
queue *newstack;
newstack=(queue*)calloc(1,siz eof(queue));
newstack->value=a;
newstack->prev=NULL;
newstack->next=NULL;
return newstack;
}
int isempty()
{
if(count==0)
{return 1;}
else
{return 0;}
}
int isfull()
{
if(count==SIZE)
{return 1;}
else
{return 0;}
}
void enqueue(int a)
{ if(isfull()==1)
{
printf("overflow condition: queue full");
}
else
{count+=1;
queue *newqueue = createnode(a);
if(back==NULL)
{
back=newqueue;
front=back;
}
else
{
back->next=newqueue;
newqueue->prev=back;
back=newqueue;
}
}
}
char peek()
{
return back->value;
}
char dequeue()
{ if(isempty()==1)
{
printf("underflow condition:empty queue");
}
else
{if(count==1)
{ int c;
c=back->value;
back=NULL;
front=NULL;
count=count-1;
return c;
}
else
{int c;
c=front->value;
front=front->next;
front->prev=NULL;
count=count-1;
return c;
}
}
}
void printqueue(queue *n)
{
while(n!=NULL)
{
printf("%d->",n->value);
n=n->next;
}
printf("NULL");
}
int main(void) {
queue good_boy;
int i;
for(i=1;i<5;i++)
{
enqueue(i);
}
printqueue(front);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 100
int count=0;
typedef struct node{
int value;
struct queue *next;
struct queue *prev;
}queue;
queue *front=NULL;
queue *back=NULL;
queue *createnode(int a)
{
queue *newstack;
newstack=(queue*)calloc(1,siz
newstack->value=a;
newstack->prev=NULL;
newstack->next=NULL;
return newstack;
}
int isempty()
{
if(count==0)
{return 1;}
else
{return 0;}
}
int isfull()
{
if(count==SIZE)
{return 1;}
else
{return 0;}
}
void enqueue(int a)
{ if(isfull()==1)
{
printf("overflow condition: queue full");
}
else
{count+=1;
queue *newqueue = createnode(a);
if(back==NULL)
{
back=newqueue;
front=back;
}
else
{
back->next=newqueue;
newqueue->prev=back;
back=newqueue;
}
}
}
char peek()
{
return back->value;
}
char dequeue()
{ if(isempty()==1)
{
printf("underflow condition:empty queue");
}
else
{if(count==1)
{ int c;
c=back->value;
back=NULL;
front=NULL;
count=count-1;
return c;
}
else
{int c;
c=front->value;
front=front->next;
front->prev=NULL;
count=count-1;
return c;
}
}
}
void printqueue(queue *n)
{
while(n!=NULL)
{
printf("%d->",n->value);
n=n->next;
}
printf("NULL");
}
int main(void) {
queue good_boy;
int i;
for(i=1;i<5;i++)
{
enqueue(i);
}
printqueue(front);
return 0;
}
Comments
Post a Comment