链式栈讲解

文章目录

  • 🍊自我介绍
  • 🍊链式栈
    • 入栈和出栈
    • linkstack.h
    • linkstack.c


你的点赞评论就是对博主最大的鼓励
当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~


🍊自我介绍

  Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”“内容共创官” ,现在我来为大家介绍一下有关物联网-嵌入式方面的内容。


🍊链式栈

概念:
  链式栈:插入操作和删除操作均在链表头部进行,链表尾部就是栈底,栈顶指针就是头指针。
图形:
在这里插入图片描述
链式栈的本质:栈头 + 不带头结点的链表

设计说明:
  先设计结点类型,再设计栈头类型;top保存的是结点首地址.

结点设计和栈头设计代码

typedef char data_t;//结点类型
typedef struct node
{data_t data;struct node *next;}linknode_t;//栈头类型
typedef struct
{//栈顶指针linknode_t *top;//记录当前栈中元素个数int n;
}linkstack_t;

入栈和出栈

linkstack.h

#ifndef __LINKSTACK_H__
#define __LINKSTACK_H__#include <stdio.h>
#include <string.h>
#include <stdlib.h>typedef char data_t;//结点类型
typedef struct node
{data_t data;struct node *next;}linknode_t;//栈头类型
typedef struct
{//栈顶指针linknode_t *top;//记录当前栈中元素个数int n;
}linkstack_t;extern linkstack_t *create_empty_linkstack();
extern int is_empty_linkstack(linkstack_t *s);
extern void push_linkstack(linkstack_t *s,data_t data);
extern data_t pop_linkstack(linkstack_t *s);
extern data_t pop_linkstack(linkstack_t *s);#endif

linkstack.c

#include "linkstack.h"//创建空的链式栈——为栈头在堆区分配空间
linkstack_t *create_empty_linkstack()
{linkstack_t *s = NULL;s = (linkstack_t *)malloc(sizeof(linkstack_t));if(NULL == s){printf("malloc is fail!\n");return NULL;}memset(s,0,sizeof(linkstack_t));return s;
}//判断栈是否为空
int is_empty_linkstack(linkstack_t *s)
{return s->top == NULL ? 1 : 0;
}//入栈
void push_linkstack(linkstack_t *s,data_t data)
{linknode_t *temp = NULL;temp = (linklist_t *)malloc(sizeof(linknode_t));if(NULL == temp){printf("malloc is fail!\n");return ;}temp->data = data;//插入数据类似于链表的头插法temp->next = s->top;s->top =temp;//更新n的值s->n ++;return ;
}//出栈
data_t pop_linkstack(linkstack_t *s)
{linknode_t *temp = NULL;data_t data;//保存要删除结点的地址temp = s->top;//取出数据data = temp->data;//更新指针信息s->top = temp->next;//释放temp结点free(temp);temp = NULL;//更新n的值s->n --;return data;}//输出栈顶元素的值
data_t get_top_data(linkstack_t *s)
{return s->top->data;
}

main.c

#include "linkstack.h"int main()
{linkstack_t *s = NULL;data_t arry[] = {'a','n','i','h','c'};int i;s = create_empty_linkstack();for(i = 0;i < sizeof(arry)/sizeof(arry[0]);i++){push_linkstack(s,arry[i]);}printf("Top data = %c\n",get_top_data(s));while(!is_empty_linkstack(s)){printf("%c",pop_linkstack(s));}printf("\n");return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

《黑神话悟空》开发框架与战斗系统解析

本文主要围绕《黑神话悟空》的开发框架与战斗系统解析展开 主要内容 《黑神话悟空》采用的技术栈 《黑神话悟空》战斗系统的实现方式 四种攻击模式 连招系统的创建 如何实现高扩展性的战斗系统 包括角色属性系统、技能配置文件和逻辑节点的抽象等关键技术点 版权声明 本…

考研数据结构——C语言实现有向图邻接矩阵

首先&#xff0c;定义了一些基本的数据结构和常量&#xff1a; VertexType&#xff1a;顶点的数据类型&#xff0c;这里定义为char。EdgeType&#xff1a;边的数据类型&#xff0c;这里定义为int&#xff0c;用于存储权重。MAXVEX&#xff1a;定义了图中最大顶点数为100。INFIN…

详细解读,F5服务器负载均衡的技术优势

在现代大规模、高流量的网络使用场景中&#xff0c;为应对高并发和海量数据的挑战&#xff0c;服务器负载均衡技术应运而生。但凡知道服务器负载均衡这一名词的&#xff0c;基本都对F5有所耳闻&#xff0c;因为负载均衡正是F5的代表作&#xff0c;换句通俗易懂的话来说&#xf…

前端vue-关于标签切换的实现

首先是循环&#xff0c;使用v-for“&#xff08;item,index) in list” :key“item.id” 然后当点击哪个的时候再切换&#xff0c;使用v-bind:class" "或者是:class" ",如果都是用active的话&#xff0c;那么每一个标签都是被选中的状态&#xff0c;…

Android IME输入法启动显示隐藏流程梳理

阅读Android AOSP 12版本代码&#xff0c;对输入法IME整体框架模块进行学习梳理&#xff0c;内容包含输入法框架三部分IMM、IMMS、IMS的启动流程、点击弹出流程、显示/隐藏流程&#xff0c;以及常见问题和调试技巧。 1. IME整体框架​​​​​​​ IME整体分为三个部分&#xf…

Log4j2—漏洞分析(CVE-2021-44228)

文章目录 Log4j2漏洞原理漏洞根因调用链源码分析调用链总结 漏洞复现dnsrmi Log4j2漏洞原理 前排提醒&#xff1a;本篇文章基于我另外一篇总结的JNDI注入后写的&#xff0c;建议先看该文章进行简单了解JNDI注入&#xff1a; https://blog.csdn.net/weixin_60521036/article/de…

茴香豆:企业级知识问答工具实践闯关任务

基础任务 在 InternStudio 中利用 Internlm2-7b 搭建标准版茴香豆知识助手&#xff0c;并使用 Gradio 界面完成 2 轮问答&#xff08;问题不可与教程重复&#xff0c;作业截图需包括 gradio 界面问题和茴香豆回答&#xff09;。知识库可根据根据自己工作、学习或感兴趣的内容调…

50页PPT麦肯锡精益运营转型五步法

读者朋友大家好&#xff0c;最近有会员朋友咨询晓雯&#xff0c;需要《 50页PPT麦肯锡精益运营转型五步法》资料&#xff0c;欢迎大家下载学习。 知识星球已上传的资料链接&#xff1a; 企业架构 企业架构 (EA) 设计咨询项目-企业架构治理(EAM)现状诊断 105页PPTHW企业架构设…

unity将多层嵌套的结构体与json字符串相互转化

定义多个结构体&#xff0c;将结构体内容输入到最终的JObject中&#xff0c;然后将其转为字符串打印出来&#xff0c;即可。 代码内容如下&#xff1a; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using UnityEngine;public class Test : MonoBehaviour {private Ap…

【开源大模型生态9】百度的文心大模型

这张图展示了百度千帆大模型平台的功能架构及其与BML-AI开发平台和百度百舸AI异构计算平台的关系。以下是各个模块的解释&#xff1a; 模型广场&#xff1a; 通用大模型&#xff1a;提供基础的自然语言处理能力。行业大模型&#xff1a;针对不同行业的定制化模型。大模型工具链…

android10 系统定制:增加应用使用数据埋点,应用使用时长统计

需求意在统计应用的使用时长和开始结束时间&#xff0c;最终生成一个文件可以直观看出什么时候进入了哪个应用、什么时候退出&#xff0c;如图&#xff1a; 每行记录了应用的进入或退出&#xff0c;以逗号分割。分别记录了事件开始时间&#xff0c;应用包名&#xff0c;进入或…

51单片机——直流电机驱动

1、直流电机介绍 直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极&#xff0c;当电极正接时&#xff0c;电机正转&#xff0c;当电极反接时&#xff0c;电机反转。 直流电机主要由永磁体&#xff08;定子&#xff09;、线圈&#xff08;转子&#xff09;和…

YoloV10改进策略:BackBone改进|Next-ViT主干赋能下的革命性改进

摘要 Next-ViT(下一代视觉Transformer)是专为解决传统ViT模型在工业部署中遇到的推理速度慢、计算复杂度高等问题而设计的。它巧妙地结合了高效的Next Convolution Block(NCB)和Next Transformer Block(NTB),通过创新的混合策略(NHS)堆叠这些模块,从而在各种视觉任务…

驱动---动态模块编译

动态模块编译 ctags 用法 创建文件 ------- ctags -R 一定要在顶层目录下 1&#xff0e; ctags –R * 2. vi –t tag (请把tag替换为您欲查找的变量或函数名) 3&#xff0e; Ctrl ] (跳转到要找的目标) 4&#xff0e; Ctrl T (回跳) 5&#xff0e; set tag/p…

计算机的错误计算(九十八)

摘要 探讨 的计算精度问题。 由计算机的错误计算&#xff08;九十六&#xff09;知&#xff0c;IEEE 754-2019标准中含有 运算。 另外&#xff0c;似乎没有语言直接编程实现内置了该运算。 例1. 已知 x-0.9999999999321 . 计算 不妨用Java编程计算&#xff1a; import…

【linux】基础IO(上)

1. 共识原理 文件 内容 属性文件分为 打开的文件 没打开的文件打开的文件 &#xff1a; 是进程打开的 ----- 本质是要研究文件和进程的关系没打开的文件 &#xff1a; 没打开的文件储存在磁盘上&#xff0c;由于没打开的文件很多&#xff0c;所以需要分门别类的防止好&…

【Linux实用教程】-03-用户权限命令

点个关注吧 &#x1f334; 3.1 Linux 的用户和组 &#x1f33e;3.1.1 用户的管理 添加用户 useradd 添加一个用户useradd test 添加 test 用户useradd test -d /home/t1 指定用户 home 目录 注意&#xff1a; 用户操作需要使用管理员权限操作&#xff0c;可以先使用…

8583 顺序栈的基本操作

### 思路 1. **初始化栈**&#xff1a;分配初始大小为 STACK_INIT_SIZE 的内存空间&#xff0c;并将 base 和 top 指针指向该空间的起始位置。 2. **入栈**&#xff1a;检查栈是否已满&#xff0c;如果已满则扩展栈的存储空间。将新元素插入栈顶&#xff0c;并更新 top 指针。 …

用pod部署prometheus

用pod部署prometheus node_exporter 节点数据收集器 daemonset ————> 保证每个节点都有一个收集器 prometheus————>监控主程序 grafana————>图形化 altermanager————>告警模块 [rootmaster01 ~]# kubectl create ns monitor-sa namespace/moni…

【天怡AI-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…