rsZheng4916 2022-01-12 15:37 采纳率: 60%
浏览 161

C语言版 顺序栈的销毁问题

#include<stdio.h>
#include<stdlib.h>
 
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define MAXSIZE 100
 
typedef int ElemType;
typedef int Status;
 
/* 顺序栈的存储结构 */
typedef struct{
    int *top;   // 栈顶指针
    int *base;  // 栈底指针
    int stackSize;  // 最大容量
}SqStack;
 
/**
 * @brief 初始化顺序栈
 */
Status initStack(SqStack *s){
    s->base = (ElemType*)malloc(sizeof(ElemType));
    if(!s->base)    return ERROR;
    s->top = s->base;
    s->stackSize = MAXSIZE;
    return OK;
}
 
Status destroyStack(SqStack *s){
     if(s->base){
        // 清楚base指向的内存单元
        free(s->base);
        s->stackSize = 0;
        s->base = s->top = NULL;
    }
    return OK;
}
 
/**
 * @brief 入栈
 */
Status push(SqStack *s,int e){
    if((s->top-s->base) == s->stackSize)    return ERROR;
    *s->top = e;
    s->top++;
}
 
/**
 * @brief 出栈
 */
Status pop(SqStack *s,int e){
    if(s->top == s->base)   return ERROR;
    --s->top;
    e = *s->top;
}
 
/**
 * @brief 遍历顺序栈
 */
Status displayStack(SqStack s){
    if(s.top == s.base) return ERROR;
 
    while(s.base < s.top){
        printf("%d ",*(s.base++));
    }
    printf("\n");
}
 
/**
 * @brief Get the Length object 获取顺序栈的长度
 */
int getLength(SqStack s){
    return s.top - s.base;
}
 
int main(){
    SqStack stack;
    ElemType e;
    // 初始化
    initStack(&stack);
    // 入栈
    push(&stack,5);
    push(&stack,8);
    push(&stack,0);
    push(&stack,3);
    push(&stack,9);
    // 遍历
    printf("displayStack: ");
    displayStack(stack);
    // 清空 获取长度
    destroyStack(&stack);
    printf("getLength: %d\n",getLength(stack));
}

请问此处执行【销毁】函数时,为什么总是【卡在free那一行】呢?

看了代码好像没有错误的地方,请各位指教。

  • 写回答

1条回答 默认 最新

  • 五一编程 2022-01-12 15:51
    关注

    没有问题,我运行了下:

    img

    评论

报告相同问题?

问题事件

  • 创建了问题 1月12日

悬赏问题

  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥35 跳过我的世界插件ip验证
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序
  • ¥15 deploylinux的ubuntu系统无法成功安装使用MySQL❓
  • ¥15 有人会用py或者r画这种图吗