#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct stack *Stack;
typedef struct stack
{
int data;
Stack next;
} stack;
Stack InitStack(Stack S)
{
S = (Stack)malloc(sizeof(stack));
S->next = NULL;
S->data = 0;
return S;
}
Stack Push(Stack S, int data)
{
if (S->next == NULL && S->data == 0) // 如果是头节点
{
S->data = data;
return S;
}
Stack s = (Stack)malloc(sizeof(stack));
s->next = S;
s->data = data;
return s;
}
int Pop(Stack S)
{
int temp = S->data;
Stack p = S;
S = S->next;
free(p);
p = NULL;
return temp;
}
int a = Pop(S);
int b = Pop(S);
S = Push(S,Operation(a,b,c));
重复释放内存了。Pop的参数不是引用类型,S = S->next;这句不能让指针实参改变
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632