学习笔记——C语言基本概念栈和队列——(14)

本次笔记是C语言的最后学习内容。

1、栈

特点:先进后出

        堆栈又名栈( stack) , 它是一种运算受限的线性表。 限定仅在表尾进行插入和删除操作的线性表。 这一端被称为栈顶, 相对地, 把另一端称为栈底。 向一个栈插入新元素又称作进栈、 入栈或压栈, 它是把新元素放到栈顶元素的上面, 使之成为新的栈顶元素; 从一个栈删除元素又称作出栈或退栈, 它是把栈顶元素删除掉, 使其相邻的元素成为新的栈顶元素。

示意图:

使用数组实现顺序栈:

#include<stdio.h>
#include<stdlib.h>
struct Stu
{int num[6];int top;
};
int Push_Stu(struct Stu*s,int x);
int mean(void);
int Pop_Stu(struct Stu* s, int* x);int main()
{int num,n;//初始化栈struct Stu *sta;sta=(struct Stu*)malloc(sizeof(struct Stu));sta->top=-1;while(1){switch (mean()){case 1:printf("请输入要入栈的元素:");scanf("%d",&num);if(Push_Stu(sta,num))printf("入栈成功!\n");elseprintf("入栈失败!栈已满\n");break;case 2:if(Pop_Stu(sta, &num))printf("出栈成功!出栈元素为:%d\n", num);elseprintf("出栈失败!栈已空。\n");break;case 3:printf("程序已退出。\n");return 0;break;default:printf("输入错误\n");break;}}
}
//定义功能界面
int mean(void)
{int num;printf("请输入你要执行的操作:\n");printf("1.入栈\n");printf("2.出栈\n");printf("3.退出\n");scanf("%d",&num);if(num>=1&&num<=3){return num;}else{printf("输入错误请重新输入:");return 0;}
}
//定义入栈函数
int Push_Stu(struct Stu*s,int x)
{  	//判断是否为栈满if(s->top == 5){return 0;//栈满不能入栈}else{s->top++;s->num[s->top] = x;return 1;}
}
//定义出栈的函数
int Pop_Stu(struct Stu* s, int* x)
{  //判断是否为栈空if(s->top==-1){return 0;//栈空不能出栈}else{*x = s->num[s->top];s->top--;return 1;}
}

使用链表实现顺序栈:

#include<stdio.h>
#include<stdlib.h>
struct Stu
{int num[6];int top;
};
struct NODE
{int num;struct NODE*front;
};
int Push_Stu(struct NODE** top, int x);
int mean(void);
int Pop_Stu(struct NODE** top, int* x);int main()
{int num,n;//初始化栈struct NODE*top=NULL;while(1){switch (mean()){case 1:printf("请输入要入栈的元素:");scanf("%d",&num);if(Push_Stu(&top,num))printf("入栈成功!\n");elseprintf("入栈失败!栈已满\n");break;case 2:if(Pop_Stu(&top, &num))printf("出栈成功!出栈元素为:%d\n", num);elseprintf("出栈失败!栈已空。\n");break;case 3:printf("程序已退出。\n");return 0;break;default:printf("输入错误\n");break;}}
}
//定义功能界面
int mean(void)
{int num;printf("请输入你要执行的操作:\n");printf("1.入栈\n");printf("2.出栈\n");printf("3.退出\n");scanf("%d",&num);if(num>=1&&num<=3){return num;}else{printf("输入错误请重新输入:");return 0;}
}
//定义入栈函数
int Push_Stu(struct NODE**top,int x)
{  struct NODE*new=(struct NODE *)malloc(sizeof(struct NODE));//判断是否为栈满new->num=x;new->front=*top;*top=new;return 1;
}
//定义出栈的函数
int Pop_Stu(struct NODE**top, int* x)
{  //判断是否为栈空if(*top==NULL){return 0;//栈空不能出栈}  else{*x = (*top)->num;struct NODE*temp=*top;*top=(*top)->front;free(temp);return 1;}
}

2、队列

        队列是一种特殊的线性表,特殊之处在于它只允许在表的前端 ( front)进行删除操作,而在表的后端 ( rear)行插入操作, 和栈一样, 队列是一种操作受限制的线性表。 进行插入操作的端称为队尾, 进行删除操作的称为队头。
        特点: 先进先出

队列就不过多介绍了。

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

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

相关文章

PolarDB for PostgreSQL 有意思吗? 有意思呀

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;…

510天,暴雪竞品迎来大考

北京时间4月10日&#xff0c;暴雪娱乐、微软游戏与网易正式宣布重新达成合作。两则数据值得关注&#xff1a; 一是上午暴雪与网易刚宣布合作&#xff0c;中午《魔兽世界》玩家预约就超过了20W。 截图时间为中午12:48 二是在上午10:24&#xff0c;《炉石传说》官方公众号发布回…

企企通入选2023年度中国高科技高成长企业、2023中小微企业数字化转型服务商TOP100榜单!

近期&#xff0c;2023年度中国高科技高成长企业系列榜单、2023中小微企业数字化转型服务商TOP100重磅发布&#xff0c;企企通凭借在数字化采购领域的产品能力和服务能力等综合实力&#xff0c;连续斩获多个奖项&#xff0c;得到主流权威媒体机构认可&#xff0c;印证了企企通的…

Github 2024-04-11 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-04-11统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目4Python项目3JavaScript项目1Cuda项目1Jupyter Notebook项目1非开发语言项目1Dify.AI: 开源的LLM应用程序开发平台 创建周期:29…

【惠海H4120 40V 1A 输出 同步降压芯片IC DCDC转换器 】

40V 1A 输出同步降压芯片IC DCDC转换器是一种电源管理芯片&#xff0c;用于将较高的输入电压转换为稳定的40V 1A输出电压。这种芯片通常用于需要高效、可靠和稳定电源的应用中&#xff0c;如工业设备、汽车电子、安防监控等领域。同步降压芯片IC DCDC转换器采用同步整流技术&am…

前端图片详解(最全面、最新)

前言 当我们在做前端性能优化的时候&#xff0c;总是会离不开图片&#xff0c;尤其在首次内容绘制&#xff08;FCP&#xff09;和最大内容绘制 (LCP)中&#xff0c;图片显得格外关键&#xff0c;而我发现关于图片格式的文章&#xff0c;一般不全&#xff0c;或者是偏旧。 所以…

内存地产风云录:malloc、free、calloc、realloc演绎动态内存世界的楼盘开发与交易大戏

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看&#xff0c;已成习惯 创作不易&#xff0c;多多支持&#xff01; 在这个波澜壮阔的内存地产世界中&#xff0c;malloc、free、calloc和realloc四位主角&#xff0c;共同演绎着一场场精彩绝伦的楼盘开…

Linux的网口名字的命名规则

在工作中&#xff0c;偶尔看到有些机器的网口名字是以ethX命令&#xff0c;有些则以enpXsX这种名字命名。网上的资料说的都不太明白,资料也无据可查&#xff0c;很难让人信服。于是决定自己查了下官方的资料和源码&#xff0c;把这些搞清楚。 官方文档&#xff1a;Predictable…

直播视频传输处理技术

流程 在视频直播场景中&#xff0c;从拍摄到手机用户接收的整个过程涉及多个技术环节&#xff1a; 视频采集&#xff1a; 视频源通常来自摄像机或智能手机摄像头&#xff0c;通过捕捉连续的画面生成原始视频信号。 编码压缩&#xff1a; 为了减少数据量以适应网络传输&#x…

【40分钟速成智能风控10】风控大数据体系2

目录 ​编辑 特征工程方法 统计量 离散化 时间周期趋势 交叉项 隐性特征 用户画像 特征工程方法 在模型圈内有这么一句俗话&#xff0c;“特征决定了模型的上限&#xff0c;而算法只是逼近这个上限”&#xff0c;由此可见特征工程在风控建模中的重要程度。特征工程的本…

最大连续1的个数 III

题目链接 最大连续1的个数 III 题目描述 注意点 nums[i] 不是 0 就是 10 < k < nums.length 解答思路 创建一个滑动窗口&#xff0c;保证窗口内翻转0的个数始终不大于k&#xff0c;不断移动窗口的右边界&#xff0c;有以下三种情况&#xff1a; 当右边界的值为1&…

模组硬件通用|ESD静电释放注意事项

当我们在进行接插件操作或者电路板调试时&#xff0c;有时会出现接口损坏或者电路板上的某个IC芯片失效的情况&#xff0c;原因可能仅仅是手触摸到了IC芯片&#xff0c;ESD(Electro-Static discharge 静电释放)导致了损坏。模组作为一个集成电路板&#xff0c;内部含有不同型号…

hertzbeat监控工具部署

目录 参考简介部署docker-compose.ymldocker安装使用portanier部署访问地址默认用户密码 配置SpringBoot程序配置基础信息新增阈值规则新增通知策略 参考 家庭私有云上 Docker 部署 hertzbeat&#xff0c;好用的监控告警系统 官网 简介 hertzbeat是一个拥有强大自定义监控能…

RabbitMQ消息模型之Topic消息模型

Topic消费模型 * 通配符模型 * 生产者必须指定完整且准确的路由key * 消费者可以使用通配符 * *&#xff1a;可以替代一级的任意字符 add.* > add.user add.goods * #&#xff1a;可以替代多级的任意字符 add.# &…

lua基本语法

Lua语法入门 初识lua vi hello.lua print("hello,lua") lua hello.lua 变量和循环 变量 循环 条件控制、函数 条件控制

USB端口

winx&#xff0c;打开设备管理器 名称解释 HS-USB 分类全称传输速率版本超速SSsuper-speed最大速率5Gbps、10Gbps、20GbpsUSB3.0~USB3.2高速HShigh-speed25Mbps-400 Mbps &#xff08;最大480 Mbps&#xff09;USB2.0全速FSfull-speed500Kbps-10Mbps&#xff08;最大12Mbps&…

软考 — 系统架构设计师 - 嵌入式真题

问题1&#xff1a; 可靠度表示系统在规定条件下&#xff0c;规定的时间内不发生失效的概率。 失效率表示系统运行到此时从未出现失效的情况下&#xff0c;单位时间内系统出现失效的概率 问题 2&#xff1a; 动态冗余又称为主动冗余&#xff0c;通过故障检测&#xff0c;故障定…

SAP 计划策略82简介

前面的文章中我们已经测试了很多才策略,10、11、40、50、70、60、63 80策略。 本文将重点说明ATO模式下82策略的使用场景,计划策略82是SAP提供的另一种基于按单生产思想的计划策略,由客户的需求来直接驱动直接生产,是一个按单生产的场景。 1、首先我们先看下系统后台82策略…

回溯算法2s总结

8.回溯算法 回溯算法理论基础 回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。回溯是递归的副产品&#xff0c;只要有递归就会有回溯。 回溯的本质是穷举&#xff0c;穷举所有可能&#xff0c;然后选出我们想要的答案 回溯法解决的问题 回溯法&#xff0c;一…

MySQL数据导出导出的三种办法(13/16)

数据导入导出 基本概述 目前常用的有3中数据导入与导出方法&#xff1a; 使用mysqldump工具&#xff1a; 优点&#xff1a; 简单易用&#xff0c;只需一条命令即可完成数据导出。可以导出表结构和数据&#xff0c;方便完整备份。支持过滤条件&#xff0c;可以选择导出部分数据…