当前位置: 首页 > news >正文

【PTA数据结构 | C语言版】链式栈的3个操作

本专栏持续输出数据结构题目集,欢迎订阅。

文章目录

    • 题目
    • 代码

题目

请编写程序,将 n 个整数顺序压入容量无限制的(链式)栈,随后执行 n+1 次取顶并出栈的操作。

输入格式:
输入首先在第一行给出正整数 n;随后一行给出 n 个 int 范围内的整数,数字间以空格分隔。题目保证有 n 个元素的(链式)栈不会超过题目的空间限制。

输出格式:
将输入的 n 个整数顺序压入栈,随后执行 n+1 次取顶并出栈的操作,输出取出的元素的值,每行一个。
注意:当栈为空时,取顶和出栈操作应该不执行,并在一行中输出错误信息 错误:栈为空。。空栈取顶应返回 -1。

输入样例:
5
1 2 3 4 5

输出样例:
5
4
3
2
1
错误:栈为空。
-1
错误:栈为空。

代码

#include <stdio.h>
#include <stdlib.h>// 定义栈节点结构
typedef struct StackNode {int data;struct StackNode* next;
} StackNode;// 定义栈结构
typedef struct {StackNode* top;
} Stack;// 初始化栈
void initStack(Stack* s) {s->top = NULL;
}// 判断栈是否为空
int isEmpty(Stack* s) {return s->top == NULL;
}// 入栈操作
void push(Stack* s, int value) {StackNode* newNode = (StackNode*)malloc(sizeof(StackNode));newNode->data = value;newNode->next = s->top;s->top = newNode;
}// 出栈操作
int pop(Stack* s) {if (isEmpty(s)) {printf("错误:栈为空。\n");return -1;}StackNode* temp = s->top;int data = temp->data;s->top = temp->next;free(temp);return data;
}// 获取栈顶元素
int peek(Stack* s) {if (isEmpty(s)) {printf("错误:栈为空。\n");return -1;}return s->top->data;
}int main() {Stack s;initStack(&s);int n;scanf("%d", &n);// 压入n个元素for (int i = 0; i < n; i++) {int num;scanf("%d", &num);push(&s, num);}// 执行n+1次取顶和出栈for (int i = 0; i < n + 1; i++) {int top_val = peek(&s);if (top_val != -1) {printf("%d\n", top_val);} else {printf("%d\n", -1);}pop(&s);}return 0;
}    
http://www.lryc.cn/news/584345.html

相关文章:

  • AI 对话实现打字机效果 Vue3 setup
  • SEO算法更新应对:5大实战案例与优化策略
  • 力扣刷题记录(c++)06
  • The 2023 ICPC Asia Hangzhou Regional Contest(G. Snake Move(最短路))
  • Map容器用map优化程序
  • 《一起出发,“春”不“晚”》特别行动踏梦武当,探寻新春奇境
  • 动态规划疑惑总结
  • 爬虫-正则使用
  • 8.2.3希尔排序
  • 【Bluedroid】蓝牙协议栈控制器能力解析与核心功能配置机制(decode_controller_support)
  • 【Nginx】Nginx 安装与 Sticky 模块配置
  • Android 13----在framworks层映射一个物理按键
  • FlashAttention 快速安装指南(避免长时间编译)
  • GoView 低代码数据可视化
  • JAVA JVM对象的实现
  • 机器学习与光子学的融合正重塑光学器件设计范式
  • 统计文件内容:统计一个文本文件中字符、单词、行数。
  • C#中异步任务取消:CancellationToken
  • HOOK专题
  • Linux流量分析:tcpdump wireshark
  • EchoSight-Pro发布说明
  • 【网络】Linux 内核优化实战 - net.ipv4.tcp_fin_timeout
  • Android Coil 3 data加载图的Bitmap或ByteArray数据类型,Kotlin
  • 设计总监年中复盘:用Adobe XD内容识别布局,告别“手动调距”
  • 大模型在膀胱癌诊疗全流程预测及应用研究报告
  • HarmonyOS AI辅助编程工具(CodeGenie)UI生成
  • RabbitMQ 高级特性之消息分发
  • web 系统对接飞书三方登录完整步骤实战使用示例
  • 网络安全(初级)(1)
  • AI+低代码双引擎驱动:重构智能业务系统的产品逻辑