为了账号安全,请及时绑定邮箱和手机立即绑定

如下要求,该如何调用两次出栈函数,显示出栈后的数据元素?

如下要求,该如何调用两次出栈函数,显示出栈后的数据元素?

慕虎7371278 2022-05-07 13:09:24
1) 1)链栈结点类型定义为:typedef struct node{int data;struct node *next;}node;2)编写进栈函数push3)编写出栈函数pop4)编写main函数,首先建立一空链栈;调用进栈函数,将从键盘输入的数据元素逐个进栈,输入0结束;显示进栈后的数据元素;调用两次出栈函数,显示出栈后的数据元素。
查看完整描述

1 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

1 思路: 主要是链表的插入和删除操作
2 代码
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
}node_type;

void push(node_type* &stack, int elem){
node_type*node = (node_type*)malloc(sizeof(node_type));
node->data = elem;
node->next = stack;
stack = node;
}
int pop(node_type* &stack){
int elem = stack->data;
node_type*node = stack;
stack = stack->next;
free(node);
return elem;
}
bool IsEmpty(node_type* stack){
return stack == NULL;
}
void display(node_type*stack){
while (stack){
printf("%d ", stack->data);
stack = stack->next;
}
puts("");
}
void destroy(node_type*stack){
while (!IsEmpty(stack)){
pop(stack);
}
}
int main(){
puts("(1) 建立空链栈");
node_type*stack = NULL;
puts("\n(2) 调用进栈函数,将从键盘输入的数据元素逐个进栈,输入0结束;");
int num;
scanf("%d", &num);
while (num != 0){
push(stack, num);
scanf("%d", &num);
}
puts("\n(3) 显示进栈后的数据元素");
display(stack);
puts("\n(4) 调用两次出栈函数,显示出栈后的数据元素");
if (!IsEmpty(stack))
printf("%d\n", pop(stack));
if (!IsEmpty(stack))
printf("%d\n", pop(stack));

destroy(stack);
getchar();
getchar();
return 0;
}
3 运行效果



查看完整回答
反对 回复 2022-05-10
  • 1 回答
  • 0 关注
  • 222 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信