#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
/* 定义链栈结构体 */
typedef struct Stack{
int data;
struct Stack *next;
}StackNode,*LinkStack;
void initStack(LinkStack s){
s = (LinkStack)malloc(sizeof(StackNode));
s = NULL;
printf("初始化成功!\n");
// return 0;
}
void push(LinkStack s,int e){
LinkStack p = (LinkStack)malloc(sizeof(StackNode));
p->data = e;
p->next = s;
s = p;
printf("push: %d!\n",e);
}
void pop(LinkStack s,int *e){
LinkStack p = (LinkStack)malloc(sizeof(StackNode));
p = s;
*e = s->data;
s = s->next;
free(p);
printf("元素 %d 出栈成功!\n",e);
}
int getTop(LinkStack s){
// if(s != NULL){
// // return s->data;
// printf("getTop: %d\n",s->data);
// }
printf("getTop: %d\n",s->data);
return s->data;
}
int main(){
int e;
LinkStack s;
initStack(s);
push(s,1);
push(s,3);
push(s,5);
push(s,7);
push(s,9);
// 出栈
pop(s,&e);
// 获取栈顶元素
getTop(s);
}
请问为什么这里初始化一个不带头结点的链栈成功了,然后压栈之后进行出栈和获取栈顶元素操作总是失败呢?
麻烦懂的兄弟帮我看一下哪里有问题,谢谢!