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

数据结构:循环队列(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其实是什么不知道

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler