最新要闻
- 【世界速看料】动物园老虎被3只狮子围攻撕咬 官方回应“越界”导致:为何要同区饲养?
- 吴京谈《流浪地球2》:努力为自己的角色增加光彩
- 全球热消息:OPPO Find N2成为老外眼中最好的折叠屏手机!三星落后其两代
- 团购低人一等?男子理发耳朵被剪掉一块肉:店方求网友高抬贵手
- 2025年前后!嫦娥六号将为人类取回月球背面第一批月壤
- 联想启天M540c/M450c商用机对比评测:酷睿版配置/性能完胜
- 卡梅隆:在家看《阿凡达2》要有大电视 别在手机上看
- 当前短讯!对比飞天茅台 花8万块测市面多款白酒:结果不出所料
- 【新视野】没人买!机械硬盘出货量惨遭腰斩 稳定性/性价比都输SSD
- 世界观速讯丨深度根植!苹果永远都不能完全离开中国制造
- 今日热闻!男子疑因抽烟错过高铁跪地求开门:科普正确补救方法
- 三星Galaxy S23系列美版定价泄露:Ultra版卖8000多元 向苹果看齐
- 【新视野】联想Tab P11 5G安卓平板将在国内上市:骁龙750G处理器
- 观速讯丨曾言获10万订单:零跑C01变相降价2.5万
- 【全球新要闻】韩国电动车基金不重仓特斯拉了!基金经理感叹:坑太多
- 头条焦点:RTX 4090 16针电源线又烧了!加强版“躺平”也不行
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
全球焦点![数据结构] 栈 (C语言)
(相关资料图)
栈
栈的概念
栈(stack)是一种特殊的线性表存储结构,其一端可以进行插入和弹出的操作,而另一端是封死的。
可以把栈想象成是一个柱状的容器。就比如一个乒乓球筒,我们只能在筒的一段进行乒乓球的放入和取出。
栈顶和栈的两种操作
栈顶就是栈的开口端,每次都是在栈顶处插入元素和删除元素。(1)入栈:将新元素存入栈中,并作为新的栈顶元素;(2)出栈:将栈顶元素弹出,并将其下面的元素作为新的栈顶元素。
栈的特性
栈有着先进先出的特性。假如入栈元素依次是 1、2、3,且中途没有元素出栈,那么最后所有元素出栈的顺序是 3、2、1。
顺序栈
顺序栈基本概念
顺序栈是用数组来实现栈的存储结构,一般会定义一个栈顶 top,初始情况下 top值为-1,表示栈为空,此时栈中无任何元素。每当有元素入栈,top就 +1; 有元素出栈, top就 -1。
顺序栈的入栈操作
顺序栈入栈操作图解
初始情况下的栈
元素1入栈
元素2入栈
元素3入栈
顺序栈入栈操作代码
//元素入栈void push(SqStack *s, Elemtype x){ if(s->top == MAXSIZE - 1) return; //栈满 s->data[++s->top] = x;}
顺序栈的出栈操作
顺序栈出栈操作图解
元素3出栈
元素2出栈
元素1出栈
顺序栈出栈操作代码
//元素出栈void pop(SqStack *s, Elemtype *x){ if(s->top == -1) return; //栈空 *x = s->data[s->top--];}
顺序栈完整程序
源代码
#include#include#include#define MAXSIZE 1000typedef int Elemtype;typedef struct{ Elemtype data[MAXSIZE]; int top; //栈顶指针}SqStack;//初始化栈void Init_SqStack(SqStack *s){ s->top = -1;}//判断栈是否为空bool IsEmpty(SqStack *s){ return s->top == -1;}//元素入栈void push(SqStack *s, Elemtype x){ if(s->top == MAXSIZE - 1) return; s->data[++s->top] = x;}//元素出栈void pop(SqStack *s, Elemtype *x){ if(s->top == -1) return; *x = s->data[s->top--];}//取栈顶元素Elemtype top(SqStack *s){ if(IsEmpty(s)){printf("栈为空\n");return -1; } return s->data[s->top];}int main(){ SqStack mystack; Init_SqStack(&mystack); for(int i = 1; i <= 5; i++)push(&mystack, i); printf("当前栈顶元素为: %d\n", top(&mystack)); int e; pop(&mystack, &e); printf("出栈元素为: %d\n", e); printf("当前栈顶元素为: %d\n", top(&mystack)); printf("全部元素出栈:\n"); while(!IsEmpty(&mystack)){ printf("%d ", top(&mystack)); pop(&mystack, &e); }}
顺序栈运行测试
链栈
链栈基本概念
链栈是用链式存储结构实现的,在实现过程中,需要定义一个 top指针保持指向当前栈顶。操作过程和链表有些相似。
链栈的入栈操作
链栈入栈操作图解
初始情况下的链栈
元素1入栈
元素2入栈
元素3入栈
链栈入栈操作代码
//入栈void LinkStack_push(LinkStack *S, ElemType e){ LinkStacknode *node; node = (LinkStacknode *) malloc(sizeof(LinkStack)); node->data = e; node->next = S->top; //新节点的next指向此时的top S->top = node; //top指针指向新的节点 S->length++;}
链栈的出栈操作
链栈出栈操作图解
元素3出栈
元素2出栈
元素1出栈
链栈出栈操作代码
//出栈void LinkStack_pop(LinkStack *S, ElemType *e){ if(IsEmpty(S)) //栈空 return; LinkStacknode *del = S->top; *e = del->data; S->top = del->next; //top跳过出栈节点,指向出栈节点的下一节点 S->length--; free(del); //释放内存}
链栈完整程序
源代码
#include #include //定义数据类型typedef int ElemType;//链栈的节点结构typedef struct LinkStacknode{ ElemType data; //存数据 struct LinkStacknode *next; //存下个节点的地址} LinkStacknode;//链栈的整体结构 typedef struct { LinkStacknode *top; int length; } LinkStack;//初始化链栈void Create_LinkStack(LinkStack *S){ S->top = NULL; S->length = 0;}//判断栈为空bool IsEmpty(LinkStack *S){ return S->length == 0;}//入栈void LinkStack_push(LinkStack *S, ElemType e){ LinkStacknode *node; node = (LinkStacknode *) malloc(sizeof(LinkStack)); node->data = e; node->next = S->top; //新节点的next指向此时的top S->top = node; //top指针指向新的节点 S->length++;}//出栈void LinkStack_pop(LinkStack *S, ElemType *e){ if(IsEmpty(S)) //栈空 return; LinkStacknode *del = S->top; *e = del->data; S->top = del->next; //top跳过出栈节点,指向出栈节点的下一节点 S->length--; free(del); //释放内存}//取栈顶ElemType LinkStack_getTop(LinkStack *S){ if(IsEmpty(S)){ printf("栈为空\n"); return -1; } return S->top->data;}int main(){ LinkStack S; Create_LinkStack(&S); ElemType e; ElemType a[5] = {3,6,7,9,10}; for(int i = 0; i < 5; i++) LinkStack_push(&S, a[i]); printf("栈顶元素:%d\n", LinkStack_getTop(&S)); LinkStack_pop(&S, &e); printf("出栈元素:%d\n", e); printf("全部元素出栈:\n"); while(!IsEmpty(&S)){ printf("%d ", LinkStack_getTop(&S)); LinkStack_pop(&S, &e); } return 0;}
链栈运行测试
全球焦点![数据结构] 栈 (C语言)
【世界速看料】动物园老虎被3只狮子围攻撕咬 官方回应“越界”导致:为何要同区饲养?
吴京谈《流浪地球2》:努力为自己的角色增加光彩
全球热消息:OPPO Find N2成为老外眼中最好的折叠屏手机!三星落后其两代
环球热点!AcWing1081. 度的数量
通讯!DVWA靶场实战(八)——SQL Injection(Blind)
团购低人一等?男子理发耳朵被剪掉一块肉:店方求网友高抬贵手
2025年前后!嫦娥六号将为人类取回月球背面第一批月壤
联想启天M540c/M450c商用机对比评测:酷睿版配置/性能完胜
卡梅隆:在家看《阿凡达2》要有大电视 别在手机上看
当前短讯!对比飞天茅台 花8万块测市面多款白酒:结果不出所料
【新视野】没人买!机械硬盘出货量惨遭腰斩 稳定性/性价比都输SSD
世界观速讯丨深度根植!苹果永远都不能完全离开中国制造
今日热闻!男子疑因抽烟错过高铁跪地求开门:科普正确补救方法
三星Galaxy S23系列美版定价泄露:Ultra版卖8000多元 向苹果看齐
【新视野】联想Tab P11 5G安卓平板将在国内上市:骁龙750G处理器
观速讯丨曾言获10万订单:零跑C01变相降价2.5万
【全球新要闻】韩国电动车基金不重仓特斯拉了!基金经理感叹:坑太多
【全球速看料】dubbo实战篇:dubbo超时设置
头条焦点:RTX 4090 16针电源线又烧了!加强版“躺平”也不行
今亮点!低脂高蛋白 鲨鱼菲特鸡胸肉:5袋到手14.9元
当前热点-安卓碎片化一地鸡毛:发布5个月后 仅5.2%用户升级Android 13
天天关注:大红灯笼挂满街头认不出红绿灯?官方回应:已调整 交通违法误判可撤销
每日讯息!男子网购耐克鞋收到两只左脚 商家拒绝提供售后
当前滚动:树状数组笔记整理
今日快看!排队5小时、日营业额过万!春节前美甲生意火了
比新车还香!极氪推出官方二手车:三电终身质保
【独家焦点】或将对标《原神》!《王者荣耀·世界》即将发布新实机演示
环球微速讯:学习笔记——@RequestMapping注解位置、注解属性;@RequestMapping支持Ant风格的路径
每日短讯:吃完饭车没了 男子怀疑被偷报警:结果忘拉手刹车溜进沟
我国第二款国产ECMO获批上市!航天火箭技术转化:完全自主知识产权
微头条丨定了!2023高考全国统考时间公布:6月7日开考
世界看热讯:曾两次感染新冠!辉瑞CEO:正研发可保护一年的新冠疫苗
环球焦点!SpaceX星际飞船超级重型助推器本周测试:33部猛禽发动机同时点火
天天观速讯丨【网关开发】5.Openresty 自定义负载均衡与流量转发
观点:100w人在线的 弹幕 系统,是怎么架构的?
焦点热议:年轻人的第一台影像旗舰!卢伟冰:Redmi Note 12 Pro系列绝对可以
天天观速讯丨东北大哥8小时狂炫40斤砂糖橘 网友提醒:当心变黄
全球报道:《魔兽世界》国服即将停运!最后一周超7千帐号开挂被封
世界看热讯:近千亿国产半导体公司卓胜微净利润暴降超50%:大家确实不爱换手机!你换没
全球速读:呆萌!66只考拉七代同堂齐送新春祝福
全球播报:非对称加解密算法SM2
世界简讯:从合并石子学区间DP
环球快播:Golang的基本数据类型-基本使用
不是安卓!鸿蒙系统成大学教材 “鸿蒙之父”王成录参与 培养开发者
焦点热议:美国科技史上最大规模裁员开启:亚马逊、微软“毕业”均超万人
全球快播:25年历史的笔记本内存将被淘汰 新标准单条可达128GB 频率更快
环球最新:24年前经典重现!《轩辕剑叁:云和山的彼端》将推出Switch版本
世界微动态丨三亚已成全国最堵城市:国人扎堆去海南 能堵到你哭泣
焦点精选!零下30度 东北司机穿10斤棉裤冒雪下乡送年货:网友为劳动者正能量点赞
焦点播报:大年初一上映!《流浪地球2》要做中国科幻片天花板 特效拉满
学习笔记——SpringMVC简介;SpringMVC处理请求原理简图;SpringMVC搭建框架
全球今日报丨曾致苹果华人工程师身亡!FSD造假实锤:特斯拉技术大牛证实
短讯!强推Win11:微软即将停售Win10数字许可
观天下!Win系统下实现任意exe静态免杀
全球速看:iPhone 14 Pro Max屏幕抽风出现死亡横线:iOS 16.3终于修复了
当前资讯!质量堪忧 退换货激增!AMD旗舰显卡RX7900 XTX游戏实测近3.5GHz 你买吗?
当前视点!还有5天关服 魔兽世界怀旧服免费玩 网易高管:出问题就找暴雪
低配版《黑神话:悟空》即将发售!新实机预告公布
“搭桥”运工具 波士顿动力机器人展示新技能:网友却不认账
佛诞是哪个国家的节日?佛诞日是农历的哪一天?
如来佛拈花一笑是什么意思?如来佛拈花一笑的故事
五常指的是哪五常?五常是什么时候建立的?
卫生衣是什么东西?卫生衣是什么季节穿的?
学习笔记——Spring声明式事务管理属性(隔离级别、事务超时、事务只读、事务回滚);Spring5新特性、新注解&整合log4j2;Spring5整合Juni
AIRIOT答疑第6期|如何使用二次开发引擎?
村的由来是什么?中国省市县区等级划分
思科路由器怎么进入设置界面?思科路由器配置命令大全
宝岛眼镜是哪里的品牌?宝岛眼镜怎么样?
开心消消乐什么时候上线的?开心消消乐怎么求助好友过关?
电脑重装系统后没有声音是怎么回事?电脑重装系统后没有声音怎么办?
b站在线人数在哪里看?b站在线人数怎么关闭?
国产芯的iPhone 14 Pro!乐视手机S1 Pro现货发售:仅899元
【当前热闻】嚣张!飞度女应急车道超车未果打砸后车被刑拘 受害车主回应
观速讯丨专为游戏优化!AYANEO OS掌机操作系统官宣2023年上线
国产科幻巨制!《流浪地球2》终极预告发布:大年初一上映
焦点要闻:红灯藏在成片红灯笼里引司机吐槽:差点6分没了
【天天播资讯】店主卖自制香肠遭男子10倍索赔 被法院驳回:网友大赞判决
世界视点!55天徒步跨越1600公里!沙特一观众获国际足联最佳球迷奖提名
【世界新视野】坐等分钱!全球205位富豪呼吁征收财富税:现在就向我们征税
全球首款独显掌机!AYANEO官宣NEXT 2将搭载锐龙7000系处理器
东芝高管放言:SSD硬盘永远无法取代机械硬盘
全球新资讯:Array 数组
读编程与类型系统笔记11_高级类型及其他
游戏对PC性能需求走向失控:16G内存已成最低要求
【世界时快讯】8900元!TP-Link最新Wi-Fi7路由器BE900上架 网速达24Gbps
观焦点:售价曝光!RTX 4060 Ti一塌糊涂 NV各种秀刀法:你会买?
新资讯:中金公司10大预测错9个:称电动车高景气 结果宁德时代年度最惨
世界速看:穷疯了?13岁儿女起诉父亲还压岁钱1.68万 官方回应压岁钱是个人私有财产
天天快报!“丑”出圈!蓝兔子邮票身价暴增 溢价幅度接近300%
过年租车7天起 日租价上涨近7倍:还定不到现车
【世界独家】西藏林芝一隧道出口雪崩 8人遇难:失联者家属称丈夫计划回家过年
全球要闻:近8年最大规模!微软正式宣布将裁员1万人
百事通!《阿凡达2》全球票房破19.28亿美元:成全球影史第六
观速讯丨CSS3选择器总结(表格)
年味十足!苹果发布iPhone兔年限定壁纸:苹果Logo变兔头
热门:“三体 脱水”登顶热搜 于和伟游戏刚上线游戏就下线
焦点速讯:“巨型屎山”QQ终于要史诗级重写!但是腾讯被骂惨了
口碑爆棚!冒险游戏改编剧《最后生还者》豆瓣开分9.2分
全球热推荐:AMD被大大看好:抢走Intel 30%市场!