问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h>
typedef struct Node{//结构体的定义
int data;
struct Node *next;
}Node;
//链栈的初始化
void Init(Node *p,int n){
//建立了链栈的头结点
p=(Node *)malloc(sizeof(Node));
p->data=0;
p->next=NULL;
}
//链栈的创建
Node* Create(Node *p,int e){//传入头指针以及要建立的入栈元素e
Node *s;//定义一个新的节点
s=(Node *)malloc(sizeof(Node));//为新的节点开辟空间
//头插法
s->data=e;
s->next=p->next;
p->next=s;
return p;
}
//出栈
Node* Pop(Node *p,int *x){
Node *r;
r=p->next;//r指向链栈的第一个元素
if(r==NULL){
printf("False");
return p;
}
else{
p->next=r->next;//出栈第一个元素
*x=r->data;//存储r的数据放在x中
free(x);//释放x所在的空间
}
return p;
}
//输出(遍历)函数
void Output(Node *p){
while(p->next!=NULL){
p=p->next;//指向第一个元素
printf("%d",p->data);
}
}
int main(){
int n,e,k=0;
int *x;//存放出栈元素
printf("输入链栈的节点数");
scanf("%d",&n);
Node *top;
Init(top,n);//对于栈进行初始化
while(k<n){//入栈(多个元素)
printf("输入入栈元素:");
scanf("%d",&e);
Create(top,e);
k++;
}
Pop(top,x);//出栈
Output(top); //输出(遍历)栈中的元素
}
运行结果及报错内容
最后只有输入元素,没有输出元素
我的解答思路和尝试过的方法
我想要达到的结果
能够实现基本的入栈和出栈操作