ky0uma 2020-09-18 11:03 采纳率: 0%
浏览 125
已采纳

malloc函数的使用问题

typedef struct lstack{
    int data;
    struct lstack* next;
}lstack, * lstackll;       //结构体定义

void init(lstackll &s)                  //初始化
{
    s=NULL;
}

//。。。中间部分省略

void out (lstackll &s, int i, int &a)   //出栈
{
    if(s ->next == NULL)                //如果最后一个数据出栈之后是空栈
    {
        a = s ->data;
        s=NULL;                          //为什么这个部分不行,要改成free(s); lstackll s=NULL;
    }
    lstackll l = s ->next;
    a = s->data;
    free(s);
    s = l;
}

以下是全部代码

#include <iostream>
#include<stdlib.h>

using namespace std;
typedef struct lstack{
    int data;
    struct lstack* next;
}lstack, * lstackll;

void init(lstackll &s)                  //初始化
{
    s=NULL;
}
void more(lstackll &s, int e)           //入栈
{
    if(s == NULL)
    {
        s = (lstack* )malloc(sizeof(lstack));
        s ->data = e;
        s ->next = NULL;
        return;
    }
    lstackll l = s;
    s =(lstack* )malloc(sizeof(lstack));
    s ->data = e;
    s ->next = l;

}
void out (lstackll &s, int i, int &a)   //出栈
{
    if(s ->next == NULL)                //如果出栈之后是空栈
    {
        a = s ->data;
        free(s);
        lstackll s=NULL;    //需要重新声明s并初始化,方便以后使用
    }
    lstackll l = s ->next;
    a = s->data;
    free(s);
    s = l;
}
int main()
{
    lstackll s;
    init(s);
    more(s,999);                //测试用  栈底
    for (int i = 0; i < 10; i++)    //循环入栈
        more(s,i);
    for (int i = 0; i < 11; i++)    //出栈
    {
        int a = 0;
        out(s,i,a);
        cout<<a<<endl;
    }
    more(s,13);                 //判断能否继续使用
    cout<<"\n"<<s->data<<endl;

    return 0;
}

  • 写回答

2条回答 默认 最新

  • threenewbee 2020-09-18 11:43
    关注

    s=NULL;

    s都指向NULL了
    你后面还
    free(s);
    肯定不行。

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

报告相同问题?

悬赏问题

  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本