数据结构 顺序队列 循环队列 基本操作
程序员文章站
2024-03-18 12:12:52
...
顺序队列基本操作:
#define MAXSIZE 1000
struct queue{
int front ,rear;//表示头指针和 尾指针
int data[MAXSIZE]; //存储数据的数组
}
void Initqueue(queue &q){ //初始化队列
q.front=0;
q.rear;
}
bool Empty(queue &q){ //判断队列是否为空
return q.front==q.rear;
}
bool Full(queue &q){ //判读队列是否为满
return q.rear==MAXSIZE;
}
bool push(queue &q,int data){ //入队操作
if(Full(q)) //如果队列满则无法进行
return 0;
else{
q.data[rear++]=data;
return 1;
}
}
void Pop(queue &q){ //c出队操作
q.front++;
}
bool gethead(queue &q,int &data){ //取队头元素
if(Empty(q))
return 0;
data=q.data[front];
return 1;
}
循环队列基本操作(顺序队列的空间优化):
#define MAXSIZE 1000
struct cyclequeue{
int front ,rear;//表示头指针和 尾指针
int data[MAXSIZE]; //存储数据的数组
}
void Initqueue(cyclequeue &q){ //c初始化队列
q.front=0;
q.rear;
}
bool Empty(cyclequeue &q){ //判断队列是否为空
return q.front==q.rear;
}
bool Full(cyclequeue &q){ //判读队列是否为满
return (q.rear+1)%MAXSIZE==q.front;
}
bool push(cyclequeue &q,int data){ //入队操作
if(Full(q)) //如果队列满则无法进行
return 0;
else{
q.data[rear]=data;
q.rear=(q.rear+1)%MAXSIZE;
return 1;
}
}
bool Pop(cyclequeue &q){ //c出队操作
if(Empty(q))
return 0;
q.front=(q.front+1)%MAXSIZE;
return 1;
}
bool gethead(cyclequeue &q,int &data){ //取队头元素
if(Empty(q))
return 0;
data=q.data[front];
return 1;
}
上一篇: 线性结构:队列