rsZheng4916 2022-01-25 23:39 采纳率: 60%
浏览 32
已结题

顺序队列的初始化问题

#include<stdio.h>
#include<stdlib.h>

#define TRUE 1
#define FALSE 0
#define MAXSIZE 10

typedef int ElemType;

typedef struct SqQueue{
    ElemType *base;
    int front;
    int rear;
}*SqQueue;

SqQueue initQueue(){
    SqQueue q;
    q->base = (ElemType*)malloc(sizeof(ElemType)*MAXSIZE);
    q->front = q->rear = 0;
    return q;
}

int queueFull(SqQueue q){
    if(q == NULL){
        return FALSE;
    }
    // 判断队尾下标是否超过最大容量
    if(q->rear >= MAXSIZE){
        return TRUE;
    }
    return FALSE;
}

int queueEmpty(SqQueue q){
    if(q == NULL){
        return FALSE;
    }
    return q->front == q->rear;
}

int getLength(SqQueue q){
    if(q == NULL){
        return FALSE;
    }
    return q->rear - q->front;
}

int enQueue(SqQueue q,ElemType data){
    q->base[q->rear] = data;
    q->rear++;
    return TRUE;    
}

int deQueue(SqQueue q,ElemType *data){
    *data = q->base[q->front];
    q->front++;
    return TRUE;
}

int main(){
    SqQueue q;
    q = initQueue();
    int data;

    printf("enQueue: ");
    for(int i = 1;i < MAXSIZE*2;i+=2){
        printf("%d  ",i);
        enQueue(q,i);
    }
    printf("\n");

    // 获取长度
    printf("Queue's length: %d\n",getLength(q));

    printf("deQueue: ");
    deQueue(q,&data);
    printf("%d\n",data);

    // 获取长度
    printf("Queue's length: %d\n",getLength(q));
}

img

我这个顺序队列的代码好像没有问题啊,debug的时候却提示这个问题!

初学者求解,感谢!

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-01-26 00:36
    关注

    q指针没有分配内存

    SqQueue initQueue(){
        SqQueue q = (SqQueue)malloc(sizeof(struct SqQueue));
        q->base = (ElemType*)malloc(sizeof(ElemType)*MAXSIZE);
        q->front = q->rear = 0;
        return q;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 2月4日
  • 已采纳回答 1月27日
  • 创建了问题 1月25日

悬赏问题

  • ¥15 cplex运行后参数报错是为什么
  • ¥15 之前不小心删了pycharm的文件,后面重新安装之后软件打不开了
  • ¥15 vue3获取动态宽度,刷新后动态宽度值为0
  • ¥15 升腾威讯云桌面V2.0.0摄像头问题
  • ¥15 关于Python的会计设计
  • ¥15 聚类分析 设计k-均值算法分类器,对一组二维模式向量进行分类。
  • ¥15 stm32c8t6工程,使用hal库
  • ¥15 找能接spark如图片的,可议价
  • ¥15 关于#单片机#的问题,请各位专家解答!
  • ¥15 博通raid 的写入速度很高也很低