汉口网站制作设计院内设计

张小明 2026/1/9 6:53:54
汉口网站制作设计,院内设计,wordpress导航栏美化,中国建设会计协会网站在计算机科学中#xff0c;栈是一种遵循“后进先出”#xff08;LIFO#xff09;原则的数据结构。在C语言中#xff0c;我们可以用数组来构建一个栈。数组为我们提供了一块连续的内存空间。我们定义栈的最大容量为5#xff0c;这意味着我们的栈最多只能存放5个元素。 #in…在计算机科学中栈是一种遵循“后进先出”LIFO原则的数据结构。在C语言中我们可以用数组来构建一个栈。数组为我们提供了一块连续的内存空间。我们定义栈的最大容量为5这意味着我们的栈最多只能存放5个元素。#include stdio.h #define MAX_SIZE 5 // 定义栈的最大容量为5栈的核心在于两个关键变量一个用于存储数据的数组和一个指示当前位置的指针。我们把这个指针命名为top告诉我们当前栈顶在哪里。初始时栈是空的因此我们将top设置为-1。因为数组的下标从0开始-1则表示“无元素”的状态。int stack[MAX_SIZE]; // 声明一个整型数组作为栈的存储空间,数组大小是 MAX_SIZE int top -1; // 声明并初始化栈顶指针;top 表示栈顶元素在数组中的下标;初始值 -1 表示空栈一、初始化栈initStack// 初始化栈 void initStack() { top -1; // 重置栈顶指针为-1空栈状态 printf(栈已初始化\n); }二、入栈操作push先判断是否为满栈再进行入栈操作。top先把 top 加1如果是空栈从-1变成0stack[top] value; 把值存入新的栈顶位置void push(int value) { if (top MAX_SIZE - 1) { // 判断栈是否已满 printf(栈已满%d 无法入栈\n, value); return; // 直接返回 } stack[top] value; // 入栈操作 printf(%d 入栈成功\n, value); }三、出栈操作pop我们需要先检查栈是否为空如果不为空就取出栈顶元素然后将top指针减1。代码中的stack[top--]实现了这个逻辑先使用当前的top值获取元素然后将top减1。这个过程不会真正删除数组中的数据只是移动了指针原来的数据仍然存在但已经被标记为“无效”因为它在当前栈的范围之外。void pop() { if (top -1) { // 判断栈是否为空 printf(栈为空无法出栈\n); return; // 直接返回 } int value stack[top--]; // stack[top]先获取当前栈顶的值 top--然后把栈顶指针减1 printf(%d 出栈成功\n, value); }四、显示栈顶元素topValues查看栈顶元素只需返回stack[top]的值而不改变top指针。void topValues() { if (top -1) { // 判断栈是否为空 printf(栈为空\n); return; } printf(栈顶元素: %d\n, stack[top]); // 显示栈顶元素但不修改top }五、打印栈元素printStack在打印时我们从栈底数组索引0开始一直打印到栈顶数组索引top这样我们看到的顺序就是元素入栈的顺序。void printStack() { if (top -1) { printf(栈为空\n); return; } printf(栈内容: ); for (int i 0; i top; i) { // 从栈底到栈顶遍历 printf(%d , stack[i]); } printf( -- 栈顶\n); }六、主函数main通过一个简单的测试来观察栈的行为。尝试将41、42、43、44、45、46这六个数字依次入栈。由于栈的容量是5前五个数字会成功入栈而第六个数字46会遇到栈满的错误。这时程序不会崩溃而是给出提示“栈已满46无法入栈”。接着查看当前栈的状态。栈里有41、42、43、44、45这五个数字栈顶是45。然后我们执行三次出栈操作依次移除45、44和43。现在栈里只剩下41和42栈顶是42。这个过程清晰展示了“后进先出”的原则最后入栈的45最先被移除。int main() { initStack(); // 初始化栈 printf( 入栈 \n); for (int i 41; i 46; i) { // 入栈6次容量只有5 push(i); // 第6次会失败 } printStack(); // 打印当前栈 topValues(); // 查看栈顶 printf(\n 出栈3次 \n); for (int i 0; i 3; i) { // 出栈3次 pop(); } return 0; }七、运行结果展示通过这个简单的数组实现我们可以学会编写数组实现栈的代码更重要的是理解了栈的核心思想。数组实现的栈简单直观但有一个明显的限制大小固定。当我们不知道需要多少存储空间时固定大小的数组可能不够灵活。这时可以考虑使用链表实现栈那样就能动态调整大小但实现起来会稍微复杂一些。单链表实现栈详见这篇C语言数据结构-单链表实现栈详解-CSDN博客
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

汽车销售网站做动画网站公司

从零开始搭建家庭自动化中枢:ESP32开发环境实战配置指南 你有没有想过,家里的灯能“感知”你的回家时间自动亮起?空调在你进门前提前启动?这一切并不需要昂贵的商业系统——只需要一块几十元的ESP32开发板,加上正确的…

张小明 2026/1/6 16:57:59 网站建设

网站定制技术销售型网站

APKMirror:重新定义Android应用获取体验的智能选择 【免费下载链接】APKMirror 项目地址: https://gitcode.com/gh_mirrors/ap/APKMirror 当应用商店不再万能时,你需要这个解决方案 你有没有遇到过这样的情况:想要下载某个特定版本的…

张小明 2026/1/8 1:58:46 网站建设

自己的网站怎么做关键词网站建设哪家最好用

从零构建可靠数据存储:深入理解I2C与EEPROM的协同工作你有没有遇到过这样的场景?设备断电重启后,用户刚设置好的Wi-Fi密码、校准参数或运行模式全部“清零”,仿佛什么都没发生过。这不仅影响产品体验,也暴露了一个关键…

张小明 2026/1/6 16:56:23 网站建设

关于动物的网站建设策划书网站服务器租赁

ImageGPT-medium:揭秘像素预测的AI图像生成神器 【免费下载链接】imagegpt-medium 项目地址: https://ai.gitcode.com/hf_mirrors/openai/imagegpt-medium ImageGPT-medium作为OpenAI推出的基于Transformer架构的图像生成模型,通过像素预测机制实…

张小明 2026/1/6 16:55:50 网站建设

宁波免费建站seo排名友链

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 快速生成一个数据筛选原型页面,包含:1.一个主uni-data-select用于选择分类 2.根据分类动态加载子uni-data-select 3.搜索框实时过滤功能 4.简单的结果展示区…

张小明 2026/1/6 16:55:18 网站建设

濮阳专业做网站公司校园二手信息网站建设

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个智能爬虫框架,自动管理请求间隔时间。功能包括:1) 基础爬虫模板 2) 自适应sleep时间调整算法 3) 随机时间间隔生成器 4) 反爬检测和自动规避机制 5)…

张小明 2026/1/6 16:54:47 网站建设