//Queue Data Structure
typedef struct {
int front,rear;
int size;
int *data;
}Que;
Que * CreateQue (int size)
{
Que * temp = (Que *) malloc (sizeof (Que));
temp->front = -1;
temp->rear = -1;
temp->size =size;
temp->data = (int *) malloc (size * (sizeof(int)));
return temp;
}
int isFull (Que *q)
{
return ( (q->rear+1)%q->size == q->front);
}
int isEmpty (Que *q)
{
return (q->front == -1);
}
void enQue(Que *q , int data)
{
if (isFull(q)){
printf("\nQueue is Full\n");
}
else{
q->rear = ((q->rear+1)%q->size);
q->data[q->rear] = data;
if(q->front==-1)
q->front=q->rear;
}
}
int deQue (Que *q)
{
int data;
if (isEmpty(q)){
printf("\nQueue is empty\n");
return -1;
}
data = q->data[q->front];
if(q->front == q->rear){
q->front = -1 ;
q->rear = -1;
}
else
q->front = (q->front+1)%q->size;
return data;
}
void DeleteQue (Que *q)
{
if (q){
if(q->data)
free(q->data);
free(q);
}
}
No comments:
Post a Comment