关于数据结构的问题,说的是顺序循环队列,希望大家帮帮我,急求!~~~
设顺序双向循环队列的数据结构定义为:typedefstruct{DataTypelist[MaxSize]intfront;//队头指针intrear;//队尾指针}BS...
设顺序双向循环队列的数据结构定义为:
typedef struct
{
DataType list[MaxSize]
int front; //队头指针
int rear; //队尾指针
}BSeqCQueue;
设Q为BSeqCQueue类型的指针参数(即输出型参数),并设初始化操作时有:Q->rear=
Q->front=0,现要求:
给出顺序双向循环队列的入队列操作和出队列操作算法思想。
要程序,能放进C里面运行的,谢谢啦 展开
typedef struct
{
DataType list[MaxSize]
int front; //队头指针
int rear; //队尾指针
}BSeqCQueue;
设Q为BSeqCQueue类型的指针参数(即输出型参数),并设初始化操作时有:Q->rear=
Q->front=0,现要求:
给出顺序双向循环队列的入队列操作和出队列操作算法思想。
要程序,能放进C里面运行的,谢谢啦 展开
1个回答
展开全部
#include <iostream>
#include <cstring>
#ifndef DataType
#define DataType int
#endif
#ifndef MaxSize
#define MaxSize 5
#endif
typedef struct {
DataType list[MaxSize];
int front; //队头指针
int rear; //队尾指针
}BSeqCQueue;
int in_queue(BSeqCQueue *q, DataType *d)
{
if ((q->rear+1)%MaxSize!=q->front) {
q->list[q->rear] = *d;
q->rear = (q->rear+1)%(MaxSize);
return 0;
}
else return 1;
}
int out_queue(BSeqCQueue *q, DataType *d)
{
if (q->front!=q->rear) {
*d = q->list[q->front];
q->front = (q->front+1)%MaxSize;
return 0;
}
return 1;
}
int main()
{
BSeqCQueue *Q = new(BSeqCQueue);
memset(Q, 0, sizeof(*Q));//初始化操作时有:Q->rear=Q->front=0,
int i;
for (i=0; i<6; i++) {
if (in_queue(Q, &i)!=0) {
std::cout << "Error in_queue\n";
}
}
DataType d;
for (i=0; i<6; i++) {
if ((out_queue(Q, &d))==0) {
std::cout << d << std::endl;
}
else {
std::cout << "Error out_queue\n";
}
}
delete Q;
return 0;
}
#include <cstring>
#ifndef DataType
#define DataType int
#endif
#ifndef MaxSize
#define MaxSize 5
#endif
typedef struct {
DataType list[MaxSize];
int front; //队头指针
int rear; //队尾指针
}BSeqCQueue;
int in_queue(BSeqCQueue *q, DataType *d)
{
if ((q->rear+1)%MaxSize!=q->front) {
q->list[q->rear] = *d;
q->rear = (q->rear+1)%(MaxSize);
return 0;
}
else return 1;
}
int out_queue(BSeqCQueue *q, DataType *d)
{
if (q->front!=q->rear) {
*d = q->list[q->front];
q->front = (q->front+1)%MaxSize;
return 0;
}
return 1;
}
int main()
{
BSeqCQueue *Q = new(BSeqCQueue);
memset(Q, 0, sizeof(*Q));//初始化操作时有:Q->rear=Q->front=0,
int i;
for (i=0; i<6; i++) {
if (in_queue(Q, &i)!=0) {
std::cout << "Error in_queue\n";
}
}
DataType d;
for (i=0; i<6; i++) {
if ((out_queue(Q, &d))==0) {
std::cout << d << std::endl;
}
else {
std::cout << "Error out_queue\n";
}
}
delete Q;
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询