Pz_mstr
2017-05-22 13:35
采纳率: 100%
浏览 1.9k
已采纳

数据结构:循环队列(c语言)

小白求问,
程序有问题,测试发现在 Q.pBase[Q.rear]=e;这一条语句执行的时候出错。百思不得其解呀....

 typedef struct queue
{
    int *pBase;
    int front;    //指向队列第一个元素
    int rear;    //指向队列最后一个元素的下一个元素
    int maxsize; //循环队列的最大存储空间
}Queue;
void InitQueue(Queue Q,int maxsize)
{
    Q.pBase=(int *)malloc(sizeof(int)*maxsize);
    if(NULL==Q.pBase)
    {
        printf("Memory allocation failure");
        exit(-1);        //退出程序
    }
    Q.front=0;         //初始化参数
    Q.rear=0;
    Q.maxsize=maxsize;
}
int Enqueue(Queue Q, int e)
{
    if(QueueFull(Q))
        return 0;
    else
    {
        Q.pBase[Q.rear]=e;
        Q.rear=(Q.rear+1)%Q.maxsize;
        return 1;
    }
}
int QueueFull(Queue Q)
{
    if(Q.front==(Q.rear+1)%Q.maxsize)
        return 1;
    else
        return 0;
}
int main()
{
    Queue Open;
    InitQueue(Open,10);
    Enqueue(Open,12);
    QueueTraverse(Open);
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • jiasuwoniu 2017-05-22 14:02
    已采纳

    int Enqueue(Queue Q, int e)
    Q是值传递,导致 Open没有被初始化,所以Q.pBase和Q.rear其实是什么不知道

    点赞 评论
  • 1586874907 2017-05-22 13:59

    函数参数改成结构体指针

    点赞 评论

相关推荐 更多相似问题