顺序队列
#include "stdio.h"
#include "stdlib.h"
#define Maxsize 2
typedef struct sqQueue
{
int data[Maxsize];
int front,rear;
}squeue;
int initsq(squeue *&sq)
{
sq=(squeue *)malloc(sizeof(squeue));
sq->front=-1;
sq->rear=-1;
}
int isEmptyQueue(squeue *sq)
{
if(sq->front==sq->rear)
{
printf("this is empty queue\n");
return 1;
}
return 0;
}
int isFullQueue(squeue *sq)
{
if(sq->rear==Maxsize-1)
{
printf("this is full queue\n");
return 1;
}
return 0;
}
int lengthQueue(squeue *sq)
{
int length;
length=sq->rear-sq->front;
printf("the length of queue is %d\n",length);
return length;
}
int enQueue(squeue *sq, int e)
{
if(isFullQueue(sq)==1)
return 0;
sq->rear++;
sq->data[sq->rear]=e;
return 1;
}
int deQueue(squeue *sq,int &e)
{
if(isEmptyQueue(sq)==1)
return 0;
sq->front++;
e=sq->data[sq->front];
return 1;
}
int main()
{
squeue *sq;
int e;
initsq(sq);
enQueue(sq,1);
enQueue(sq,2);
enQueue(sq,3);
lengthQueue(sq);
deQueue(sq,e);
deQueue(sq,e);
printf("%d\n",e);
deQueue(sq,e);
enQueue(sq,4);
return 1;
}
循环队列
#include "stdio.h"
#include "stdlib.h"
#define Maxsize 3
typedef struct sqQueue
{
int data[Maxsize];
int front,rear;
}squeue;
int initsq(squeue *&sq)
{
sq=(squeue *)malloc(sizeof(squeue));
sq->front=0;
sq->rear=0;
}
int isEmptyQueue(squeue *sq)
{
if(sq->front==sq->rear)
{
printf("this is empty queue\n");
return 1;
}
return 0;
}
int isFullQueue(squeue *sq)
{
if((sq->rear+1)%Maxsize==sq->front)
{
printf("this is full queue\n");
return 1;
}
return 0;
}
int lengthQueue(squeue *sq)
{
int length;
length=sq->rear-sq->front;
printf("the length of queue is %d\n",length);
return length;
}
int enQueue(squeue *sq, int e)
{
if(isFullQueue(sq)==1)
return 0;
sq->rear=(sq->rear+1)%Maxsize;
sq->data[sq->rear]=e;
return 1;
}
int deQueue(squeue *sq,int &e)
{
if(isEmptyQueue(sq)==1)
return 0;
sq->front=(sq->front+1)%Maxsize;
e=sq->data[sq->front];
return 1;
}
int showQueue(squeue *sq)
{
for(int i=0;i<Maxsize;i++)
printf("%d ",sq->data[i]);
printf("\n");
}
int main()
{
squeue *sq;
int e;
initsq(sq);
enQueue(sq,1);
enQueue(sq,2);
enQueue(sq,3);
lengthQueue(sq);
showQueue(sq);
deQueue(sq,e);
deQueue(sq,e);
printf("%d\n",e);
lengthQueue(sq);
showQueue(sq);
deQueue(sq,e);
enQueue(sq,4);
showQueue(sq);
return 1;
}
引入计数器count
#include "stdio.h"
#include "stdlib.h"
#define Maxsize 3
typedef struct sqQueue
{
int data[Maxsize];
int front,rear;
int count;
}squeue;
int initsq(squeue *&sq)
{
sq=(squeue *)malloc(sizeof(squeue));
sq->front=0;
sq->rear=0;
sq->count=0;
}
int isEmptyQueue(squeue *sq)
{
if(sq->count ==0 )
{
printf("this is empty queue\n");
return 1;
}
return 0;
}
int isFullQueue(squeue *sq)
{
if(sq->count == Maxsize)
{
printf("this is full queue\n");
return 1;
}
return 0;
}
int lengthQueue(squeue *sq)
{
int length;
printf("the length of queue is %d\n",sq->count);
return length;
}
int enQueue(squeue *sq, int e)
{
if(isFullQueue(sq)==1)
return 0;
sq->rear=(sq->rear+1)%Maxsize;
sq->data[sq->rear]=e;
sq->count ++;
return 1;
}
int deQueue(squeue *sq,int &e)
{
if(isEmptyQueue(sq)==1)
return 0;
sq->front=(sq->front+1)%Maxsize;
e=sq->data[sq->front];
sq->count--;
return 1;
}
int showQueue(squeue *sq)
{
for(int i=0;i<Maxsize;i++)
printf("%d ",sq->data[i]);
printf("\n");
}
int main()
{
squeue *sq;
int e;
initsq(sq);
enQueue(sq,1);
enQueue(sq,2);
enQueue(sq,3);
lengthQueue(sq);
showQueue(sq);
deQueue(sq,e);
deQueue(sq,e);
printf("%d\n",e);
lengthQueue(sq);
showQueue(sq);
deQueue(sq,e);
enQueue(sq,4);
showQueue(sq);
return 1;
}