linkstack头文件 c语言,链式栈的基本操作——LinkStack(C语言版)

2023-10-28

#include "stdafx.h"

#include

#define OK 1

#define ERROR 0

#define TRUE 1

#define FALSE 0

#define MAXSIZE 20 /* 存储空间初始分配量 */

typedef int Status;

typedef int SElemType; /* SElemType类型根据实际情况而定,这里假设为int */

/* 链栈结构 */

typedef struct StackNode

{

SElemType data;

struct StackNode *next;

}StackNode,*LinkStackPtr;

typedef struct LinkStack

{

LinkStackPtr top;

int count;

}LinkStack;

Status visit(SElemType c)

{

printf("%d ",c);

return OK;

}

/* 构造一个空栈S */

Status InitStack(LinkStack *S)

{

S->top = (LinkStackPtr)malloc(sizeof(StackNode));

if(!S->top)

{

return ERROR;

}

S->top = NULL;

S->count = 0;

return OK;

}

/* 把S置为空栈 */

Status ClearStack(LinkStack *S)

{

LinkStackPtr p,q;

p = S->top;

while(p)

{

q = p; /* "q" is the prev node of node "p"*/

p = p->next;

free(q);

}

S->count=0;

return OK;

}

/* 若栈S为空栈,则返回TRUE,否则返回FALSE */

Status IsEmptyStack(LinkStack S)

{

if (S.count == 0)

{

return TRUE;

}

else

{

return FALSE;

}

}

/* 返回S的元素个数,即栈的长度 */

int GetStackLength(LinkStack S)

{

return S.count;

}

/* 若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回ERROR */

Status GetTopElem(LinkStack S,SElemType *e)

{

if (S.top == NULL)

{

return ERROR;

}

else

{

*e = S.top->data;

}

return OK;

}

/* 插入元素e为新的栈顶元素 */

Status Push(LinkStack *S,SElemType e)

{

LinkStackPtr s=(LinkStackPtr)malloc(sizeof(StackNode));

if (!s)

{

return ERROR;

}

s->data = e;

s->next = S->top;/* 把当前的栈顶元素赋值给新结点的直接后继,见图中① */

S->top = s; /* 将新的结点s赋值给栈顶指针,见图中② */

S->count++;

return OK;

}

/* 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR */

Status Pop(LinkStack *S,SElemType *e)

{

LinkStackPtr p;

if(IsEmptyStack(*S))

{

return ERROR;

}

*e = S->top->data;

p = S->top; /* 将栈顶结点赋值给p,见图中③ */

S->top = S->top->next;/* 使得栈顶指针下移一位,指向后一结点,见图中④ */

free(p); /* 释放结点p */

S->count--;

return OK;

}

Status StackTraverse(LinkStack S)

{

LinkStackPtr p;

p=S.top;

while(p)

{

visit(p->data);

p=p->next;

}

printf("\n");

return OK;

}

int _tmain(int argc, _TCHAR* argv[])

{

int j;

LinkStack s;

int e;

if(InitStack(&s)==OK)

for(j=1;j<=10;j++)

Push(&s,j);

printf("栈中元素依次为:");

StackTraverse(s);

Pop(&s,&e);

printf("弹出的栈顶元素 e=%d\n",e);

printf("栈空否:%d(1:空 0:否)\n",IsEmptyStack(s));

GetTopElem(s,&e);

printf("栈顶元素 e=%d 栈的长度为%d\n",e,GetStackLength(s));

ClearStack(&s);

printf("清空栈后,栈空否:%d(1:空 0:否)\n",IsEmptyStack(s));

return 0;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linkstack头文件 c语言,链式栈的基本操作——LinkStack(C语言版) 的相关文章

  • win10中 微软 输入法 简体字 与 繁体字 设定 切换

    前言 不知道按了什么快捷键 输入的文字都变成了繁体字效果 快捷键 ctrl shift f 设定方法如下 一步一步设定 2 3 4 5 6 7 8 9 10
  • Python——pymysql + DBUtils实现数据库连接池及数据批量读写

    文章目录 1 安装pymysql DBUtils 2 创建数据库连接池 3 读MySQL 1 只读一行 2 批量读取 4 写入MySQL 1 安装pymysql DBUtils pip3 install i https pypi tuna
  • Unity2019+ 版本JDK配置常见问题

    在之前那篇Vuforia的配置中 安卓环境的配置是没问题的 而有人反馈说JDK配置有问题 后面我挨个排查了问题 结合网上已有的问题 整理出这篇分享给大家 1 明明安装了对应Unity版本模块包却依然提示找不到OpenJDK 如图1 2 图1
  • Java:正则表达式工具的使用

    概述 在java中 提供了一些跟正则表达式有关的工具类 例如String Pattern Matcher PatternSyntaxException等等 可以进行丰富的与正则表达式有关的操作 本文便依据功能分类来对这些功能的使用进行详细讲
  • 网站延迟加载图像有哪些方法?

    加载图像时 网站可能遇到延迟的问题 以下是一些可以减少图像加载延迟的方法 1 图像优化 优化图像大小和格式是减少加载延迟的关键 可以使用图像编辑工具来压缩图像 减小文件大小 同时保持可接受的质量 另外 使用适当的图像格式 如JPEG PNG
  • Linux API函数大全

    获取当前执行路径 getcwd 1 API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资
  • “930大促”日活增速超40% ,哈啰如何用预案高效应急?

    一分钟精华速览 应急预案 是指在系统出现故障时 为了保障核心业务能够持续可用 而提前准备的指导手册 这个手册可以用来告诉我们 在遇到什么样的问题后 做什么样的操作能最大化地降低对业务的影响 将被动响应变为主动防御 哈啰结合 930大促 活动
  • matlab练习程序(二值图像连通区域标记法,一步法)

    这个只需要遍历一次图像就能够完全标记了 我主要参考了WIKI和这位兄弟的博客 这两个把原理基本上该介绍的都介绍过了 我也不多说什么了 一步法代码相比两步法真是清晰又好看 似乎真的比两步法要好很多 代码如下 clear all close a
  • maven更改镜像路径为阿里镜像

    maven仓库默认在国外 使用难免很慢 尤其是下载依赖的时候 换为国内镜像 下载速度会变快很多 国内支持maven镜像的有阿里云 开源中国等 这里换为阿里云的 maven每更新一次镜像地址 都会重新下载一次包 修改方法 修改maven根目录
  • 使用socket选项SO_RCVTIMEO和SO_SNDTIMEO设置超时时间

    socket选项SO RCVTIMEO和SO SNDTIMEO 他们分别 用来设置socket接受 发送数据超时时间 因此 这两个选项仅对数据接收和发送相关的socket专用系统调用有效 send sendmsg recv recvmsg
  • KEIL环境下找不到core_cmInstr.h文件的处理

    从办公室拷贝的工程 好像缺文件了 编译报错 后来打开工程目录发现里面缺很多文件 其他一个项目的工程如下有特别多的文件 加了文件后再编译就好了
  • shell脚本实现彩色进度条

    代码 bin bash index 0 i 0 bar label while i le 100 do let index i 4 let colour 30 i 8 echo en e 1 colour m printf 100s d c
  • fopen w 和wb

    w 表示为文本文件 用则会把文件中的 0A 变为 0D0A 因为某些文件系统认为 0A 为文本文件的换行符 windows认为 0D0A 为文本文件的换行符 为了兼容其他文件系统 如从linux拷贝来的文件 windows上的fopen函数
  • Linux下的Nginx安装及web项目配置

    工作需要 记录一下 安装并运行Nginx Nginx是一款轻量级的网页服务器 反向代理服务器 相较于Apache lighttpd具有占有内存少 稳定性高等优势 安装Nginx首先要安装依赖的运行库 cd 至 usr local目录进行安装
  • 对于Quaternion的初步理解

    Quaternion 四元数 在unity中用于角度的旋转 Euler函数 返回一个旋转角度 绕z轴旋转z度 绕x轴旋转x度 绕y轴旋转y度 像这样的顺序 Quaternion Euler new Vector3 0 90 0 表示绕y轴旋
  • 键盘输入一个字符串,统计每个字符出现的次数,并且按照结果格式输出

    键盘输入一个字符串 统计每个字符出现的次数 并且按照结果格式输出 需求 aababcabcdabcde 获取字符串中每一个字母出现的次数 要求结果输出格式是 a 5 b 4 c 3 d 2 e 1 分析 A 定义一个字符串 B 定义一个Tr
  • C++:类和对象(下)---对类和对象深入一些的理解

    文章目录 构造函数 初始化列表 explicit关键字 匿名对象 构造函数 初始化列表 前面已然介绍过构造函数 但并未完全结束 构造函数有很多种写法 有带缺省参数的 有全缺省的 不带缺省参数的 但用前面的方法 都是对里面成员变量的一种赋值
  • Jitter Removal in Image and Sequence

    去除重影 消抖 在 jitter removal images and video sequences Using robust decision Based Adaptive spatio temporal median Algorith
  • jupyter notebook环境配置(重写config文件、配置默认工作文件路径、如何解决需要token登陆的问题/解决无法跳转浏览器问题等)

    一 重写config文件 1 输入cmd命令 jupyter notebook generate config 2 根据文件生成路径找到generate config文件 3 双击或者记事本打开jupyter notebook congig

随机推荐

  • Qt入门 工具栏QToolBar和菜单栏QMenuBar(六)

    只有在继承了QMainWindow的窗体 才会有this gt menuBar gt addMenu 以及this gt addToolBar 函数 Qmune QMune与QMenuBar之间的关系见下面的代码 方法1 QMenu men
  • 计算机系统结构选择题

    1 1 多处理机上两个程序段之间同时有先读后写和先写后读两种数据相关 则 C A 交换串行 B 不能并行执行 C 必须并行执行 D 顺序串行 2 输入输出系统硬件的功能对下面哪一类人员是透明的 A A 应用程序员 B 操作系统程序员 C 机
  • matlab 残差 dw,Eviews中的自相关检验与修正操作(一):残差图与DW检验

    自相关是指在时间序列资料中按时间顺序排列的观测值之间存在相关性或在横截面资料中按空间顺序排列的观测值之间存在相关性 它是不满足经典OLS回归的假定之一 自相关问题往往出现在时间序列数据中 所以也经常称为 序列自相关 自相关问题往往采用残差图
  • 2023全国大学生信息安全竞赛(ciscn)初赛题解

    战队信息 安全知识 甚至不用看视频 百度就有答案 除了那个最新的美国时政 其它的ChatGPT就能回答 Misc 签到卡 关注公众号 根据提示 直接print open flag read 国粹 脑洞题 给的题目原图有两排一模一样的麻将 思
  • Postman配置多环境请求地址

    作用 平时用postman测试接口时 同一个接口免不了要在多个环境测试 但是每次都要手动的修改请求的IP地址是在麻烦 可以用此方法提高效率 省事不少 1 创建 点击页面右上角齿轮 2 点击弹出页面右下角的Add按钮 3 填写请求地址 例如
  • 微分算子法个人整理

    陈文灯老师创立的微分算子法 在求解特定的微分方程能够省去大部分的计算时间 很久不写了 这篇为了回顾方便 一同有四种总结 感谢B站BV1D5411776Q的总结 考研加油 稳定发挥
  • [网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用

    这是作者的系列网络安全自学教程 主要是关于网安工具和实践操作的在线笔记 特分享出来与博友共勉 希望您们喜欢 一起进步 前文分享了Web安全学习路线 并实现了最简单的木马和病毒代码 这篇文章将详细讲述Shodan搜索引擎的基本用法及Pytho
  • Jenkins+Python自动化测试之持续集成详细教程

    前言 今天呢笔者想和大家来聊聊Jenkins Python自动化测试持续集成 废话呢就不多说了哟咱们直接进入主题哟 一 Jenkins安装 Jenkins是一个开源的软件项目 是基于java开发的一种持续集成工具 用于监控持续重复的工作 旨
  • Oracle中如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?...

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Oracle中如何导出存储过程 函数 包和触发器的定义语句 如何导出表的结构 如何导出索引的创建语句 QQ群里有人问 如何导出一个用户下的存储过程 麦苗答 方法有多种 可以
  • springboot整合eurake

    Spring Boot整合Eureka是一个比较常见的场景 Eureka是一个服务注册与发现中心 可以方便地管理服务的注册与发现 在整合过程中 需要在pom xml文件中添加对Eureka Server的依赖 并在Spring Boot应用
  • Vue.js 下的瀑布流组件 vue-waterfall

    vue waterfall 详细介绍 Vue js 下的瀑布流组件 ES5 ES6 UMD 兼容 享受数据驱动带来的便利 让事情变得简单
  • 判断t1树中是否有与t2树完全相同的子树

    描述 给定彼此独立的两棵二叉树 树上的节点值两两不同 判断 t1 树是否有与 t2 树完全相同的子树 示例1 输入 1 2 3 4 5 6 7 8 9 2 4 5 8 9 返回值 true 备注 1 n 500000 方法一 递归 要判断t
  • 使用echarts实现简单的关系图谱

    使用echarts实现简单的关系图谱 如图 代码
  • pytorch载入数据与对应的标签,使用torch.utils.data详解,DataLoader的使用

    在进行深度学习处理的时候 我们需要将数据输入到神经网络中进行训练 训练网络的学习能力 其实是根据一定的规则更新网络节点中的参数 而这个规则的来源就是依赖于数据与标签 我们需要将数据与标签相匹配 才能让网络进行训练 比如说网络学习到了一定的特
  • stem教育资源

    人生不同阶段都有不同的使命 在学生阶段 学习掌握知识为以后的人生获得成就的能力 就是这个阶段使命 为了这个使命 他们必须要学习忍耐 学会放弃 学会付出 这不仅仅是学习的需要 也是人生的一种修炼 纵观我们身边的人 但凡取得一定成就的都是要经过
  • 用 LangChain 构建基于资料库的问答机器人(三):ReAct

    大家好 我是 Jambo 我们已经学习了如何使用 LangChain 的一些基本功能 解下我们就应该要结合这些功能来做一些复杂的东西了 但在这之前 为了让同学们更好的理解 LangChain 在这其中做了什么 我想先介绍一下关于 GPT 使
  • 修改索引值python_pandas DataFrame的修改方法(值、列、索引)

    对于DataFrame的修改操作其实有很多 不单单是某个部分的值的修改 还有一些索引的修改 列名的修改 类型修改等等 我们仅选取部分进行介绍 一 值的修改 DataFrame的修改方法 其实前面介绍loc方法的时候介绍了一些 1 loc方法
  • STM32 IAP Ymodem

    STM32 IAP采用Ymodem协议升级固件 公司最近软件需要通过IAP来升级所有板卡的固件 其中板卡有2块 一块主控板卡 一块子控板卡 其中 主控板卡与子控板卡之间采用RS485通信 PC与主控板卡采用RS232通信 具体框架 一 PC
  • pc817光耦参数_光耦在电子电路中有什么作用?关键参数有哪些?一起了解一下...

    光耦作为一个可以对信号进行电气隔离的电子元器件 常用于开关电源电压反馈隔离 电路隔离控制 光耦在电子电路中有不可或缺的地位 了解光偶的特性对学习电子电路有不少帮助 开关电源电压反馈 光耦隔离控制继电器 今天就一起来了解一下光耦吧 电子元器件
  • linkstack头文件 c语言,链式栈的基本操作——LinkStack(C语言版)

    include stdafx h include define OK 1 define ERROR 0 define TRUE 1 define FALSE 0 define MAXSIZE 20 存储空间初始分配量 typedef int