学习笔记——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,一经查实,立即删除!

相关文章

如何通过OceanBase V4.2的复制表,提升数据库性能

引言&#xff1a; 复制表是OceanBase数据库中一种特殊的表&#xff0c;本文将介绍其基本定义与应用方法。复制表&#xff0c;能够在任意一个处于“健康”状态的副本上&#xff0c;获取到数据的最新变更。对于写入操作不频繁&#xff0c;但对读取操作的延迟和负载均衡有较高要求…

基础知识点全覆盖(1)

Python基础知识点 1.基本语句 1.注释 方便阅读和调试代码注释的方法有行注释和块注释 1.行注释 行注释以 **# **开头 # 这是单行注释2.块注释 块注释以多个 #、三单引号或三双引号(注意: 基于英文输入状态下的标点符号) # 类 # 似 # 于 # 多 # 行 # 效 # 果 这就是多行注释…

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;共同演绎着一场场精彩绝伦的楼盘开…

RS232,RS422,RS485介绍

目录 一.前言 二.示意图 三.RS-232 四.RS-422 五.RS485 一.前言 请你根据这个目录生成一段前言:一.前言 二.示意图 三.RS-232 四.RS-422 五.RS485 在本文中,我们将介绍RS-232、RS-422和RS-485这三种串行通信协议。这些协议在计算机和外部设备之间的数据传输中起着重要的…

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是一个拥有强大自定义监控能…

Python3 标准库,API文档链接

一、标准库 即当你安装python3 后就自己携带的一些已经提供好的工具模块&#xff0c;工具类&#xff0c;可以专门用来某一类相关问题&#xff0c;达到辅助日常工作或者个人想法的一些成品库 类似的 C ,Java 等等也都有自己的标准库和使用文档 常见的一些&#xff1a; os 模块…

使用vmware worksttion的ovftool工具导出esxi虚拟机的ovf,未成功

目的&#xff1a;可以实现跨越物理机克隆esxi虚拟机 利用VMware workstation&#xff08;本人使用的pro版&#xff09;的 OVF Tool导出。 假设你的ESXi的服务器ip是172.28.1.1&#xff0c;要备份的虚拟机的名字叫做ubuntu&#xff0c;workstation装在windows上。 首先进入VMwa…

RabbitMQ消息模型之Topic消息模型

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

lua基本语法

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