1.顺序存储
queue createqueue(int maxsize)
{
queue q = (queue)malloc(sizeof(struct node));
q->data = (int*)malloc(maxsize*sizeof(int));
q->front = q->rear = 0;
q->maxsize = maxsize;
}
bool isfull(queue q)
{
return((q->rear + 1)%q->maxsize == 0);
}
bool add(queue q,int x)
{
if(isfull(q))
return 0;
q->rear = (q->rear + 1)%q->maxsize;
q->data [q->rear] = x;
return 1;
}
bool isempty(queue q)
{
return (q->front == q->rear);
}
int Detele(queue q)
{
if(isempty)
return 0;
q->front = (q->front + 1)%q->maxsize;
return q->data [q->front];
}
2.链式存储
//循环队列
#include<iostream>
#include<cstdlib>
using namespace std;
struct node{
int data;
struct node* next;
};
typedef node* list;
struct qnode{
list front,rear;
int maxsize;
};
typedef qnode* queue;
bool isempty(queue q)
{
return (q->front == NULL);
}
int deleted(queue q)
{
list frontcell;
int frontelem;
if(isempty(q))
return -1;
frontcell = q->front;
if(q->front == q->rear)
q->front = q->rear = NULL;
else
q->front = q->front->next;
frontelem = frontcell->data;
free(frontcell);
return frontelem;
}