嵌入式系统挑战赛题目----简单栈数据结构

一、题目要求

实现一个简单的栈数据结构。栈是一种后进先出线性数据结构,只能在一端进行插入和删除操作。请编写一个C语言程序,实现包括栈的初始化、入栈、出栈以及判断栈是否为空等基本操作。

请根据要求在begin、end间完成代码,不要改变代码中其他部分。

示例输入和输出:

Is stack empty?No

Popped element: 30

Is stack empty?No

二、程序代

#include <stdio.h>
#include <stdbool.h>#define MAX_SIZE 100typedef struct {int data[MAX_SIZE];int top;
} Stack;void initStack(Stack *stack) {stack->top = -1;  // 初始化栈顶指针为-1
}bool isStackEmpty(Stack *stack) {///Begin///// 如果栈顶指针为-1,则栈为空if(stack->top==-1)return 1;else return 0;End
}bool isStackFull(Stack *stack) {return (stack->top == MAX_SIZE - 1);  // 如果栈顶指针等于最大容量减1,则栈为满
}void push(Stack *stack, int value) {if (isStackFull(stack)) {printf("Error: Stack overflow.\n");return;}stack->data[++stack->top] = value;  // 将元素入栈,栈顶指针加1
}int pop(Stack *stack) {if (isStackEmpty(stack)) {printf("Error: Stack underflow.\n");return -1;}return stack->data[stack->top--];  // 从栈中弹出栈顶元素,并将栈顶指针减1
}int main() {Stack stack;initStack(&stack);push(&stack, 10);push(&stack, 20);push(&stack, 30);printf("Is stack empty? %s\n", isStackEmpty(&stack) ? "Yes" : "No");printf("Popped element: %d\n", pop(&stack));printf("Is stack empty? %s\n", isStackEmpty(&stack) ? "Yes" : "No");return 0;
}

三、程序在Dev C++测试结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/277209.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高速无刷直流电机霍尔板在高速无刷直流三相电机上是一个什么样的角色

目录 一、0-30阶段 二、30-60阶段 三、60-90阶段 三相电机在各领域应用广泛&#xff0c;是现代工业和生活的重要设备。三相全波无刷电机的旋转原理可以分为0-90旋转的详细说明如下&#xff1a; 首先&#xff0c;我们以一个三相60相带的无刷直流电机为例&#xff0c;来说明其…

【Linux】进程周边004之进程的调度与切换(领略Linux系统进程调度算法的神奇)

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.进程切换 2.进程调度 2.…

VBA_MF系列技术资料1-242

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-04属于定…

【多线程】Java中多线程的几种实现方式

多线程&#xff08;multithreading&#xff09;是指在一个程序中同时执行多个不同的线程&#xff08;thread&#xff09;&#xff0c;每个线程都是程序的一部分&#xff0c;是独立的执行路径。相比于单线程程序&#xff0c;多线程程序可以更充分地利用计算机的多核心或多处理器…

PyTorch: 基于【VGG16】处理MNIST数据集的图像分类任务【准确率98.9%+】

目录 引言在Conda虚拟环境下安装pytorch步骤一&#xff1a;利用代码自动下载mnist数据集步骤二&#xff1a;搭建基于VGG16的图像分类模型步骤三&#xff1a;训练模型步骤四&#xff1a;测试模型运行结果后续模型的优化和改进建议完整代码结束语 引言 在本博客中&#xff0c;小…

对不起,必须放弃SQL!

尽管SQL很受欢迎&#xff0c;也很成功&#xff0c;但它又总是充斥着种种矛盾。 SQL可能笨拙又冗长&#xff0c;但开发人员又经常发现它往往是他们提取所需数据的最简单直接的方法。当查询写入正确时&#xff0c;它可以快如闪电&#xff0c;当查询出错时&#xff0c;它就会慢如…

elementUi表单验证 上一下两项都有必填校验,添加v-if后失效

需在el-form-item 在不一样的key区分就在页面会生效

ConnectionError怎么解决

文章目录 解决思路lz的具体解决过程 解决思路 这个错误表明在尝试加载评价指标时&#xff0c;代码试图从 huggingface 下载文件&#xff0c;但由于代理错误而无法连接。 为了解决这个问题&#xff0c;你可以尝试以下几个步骤&#xff1a; 1.设置代理&#xff1a; 如果你在使…

jmeter接口测试项目实战详解,零基础也能学

1.什么是jmeter&#xff1f; JMeter是100%完全由Java语言编写的&#xff0c;免费的开源软件&#xff0c;是非常优秀的性能测试和接口测试工具&#xff0c;支持主流协议的测试 2.jmeter能做什么&#xff1f; 1.JMeter是100%完全由Java语言编写的软件性能测试的GUI的测试工具&…

X86汇编语言:从实模式到保护模式(代码+注释)--c10、11(保护模式:32位x86处理器编程架构+进入保护模式)

保护模式&#xff1a;32位x86处理器编程架构 IA-32架构的基本执行环境 寄存器扩展 通用寄存器&#xff08;32&#xff09;&#xff1a;EAX EBX ECX EDX ESI EDI EBP ESP 指令寄存器&#xff08;32&#xff09;&#xff1a;EIP 标志寄存器&#xff08;32&#xff09;&#xff…

路由器的转换原理--ENSP实验

目录 一、路由器的工作原理 二、路由表的形成 1、直连路由 2、非直连路由 2.1静态路由 2.2动态路由 三、静态路由和默认路由 1、静态路由 1.1静态路由的缺点 1.2路由的配置--结合ensp实验 2、默认路由--特殊的静态路由 2.1概念 2.2格式 2.3默认路由的配置--ens…

如何在 JavaScript 中实现任务队列

任务队列的概念 任务队列就是存放任务的队列&#xff0c;队列中的任务都严格按照进入队列的先后顺序执行。 在前一条任务执行完毕后&#xff0c;立即执行下一条任务&#xff0c;直到任务队列清空。 任务队列的基本执行流程如下&#xff1a; 设置任务队列并发数&#xff1b; …