rsZheng4916 2022-01-25 15: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-25 16: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月3日
  • 已采纳回答 1月27日
  • 创建了问题 1月25日

悬赏问题

  • ¥20 双硬盘安装Ubuntu后windows 无法挂载硬盘
  • ¥15 帮我利用jupyter 运行一个正确的代码
  • ¥15 如何使用Gephi软件和Python包中的GephiStreamer交互
  • ¥15 sqlite加密问题咨询
  • ¥15 appdesigner接收不到udp组播的数据
  • ¥15 verilog 非阻塞赋值下的移位拼接错误
  • ¥100 两个按钮控制一个LED
  • ¥15 用C语言写离散数学相关问题
  • ¥30 如何用python的GephiStreamer连接到gephi中,把Python和Gephi的具体操作过程都展示,重点回答Gephi软件的调试,以及如果代码的端口在浏览器中无法显示怎么处理
  • ¥15 ansys机翼建模肋参数