链式栈(c)

2023-11-17

链式栈

在上节我们提到了顺序栈,而链式栈就是把顺序栈用链表的方式来存储,如果对链表和顺序栈的学习较为深刻的话,学习链式栈会非常容易。
首先第一步和单链表操作基本相同,创建一个结构体,一块是数据域,另一块是指针域,用来指向下一个元素;

typedef struct Stack{
	int data;
	struct Stack *next;
}Stack;

对于链式栈的结构,可以看下图:
在这里插入图片描述
然后我们来看链式栈的一些基本操作:
初始化栈:

Stack *InitStack(Stack *s)//初始化栈 
{
	s=NULL;
	return s;
}

判断栈是否为空栈:

bool emptystack(Stack* s) {//判断是否为空栈
	if (s)return true;
	else return false;
}

链式栈的入栈操作:

Stack* push(Stack* s, int newnum) {//链式栈的入栈操作
	Stack* newstack=(Stack*)malloc(sizeof(Stack));
	newstack->data = newnum;
	newstack->next = s;
	s = newstack;
	return s;
}

逐个打印栈内元素

void print(Stack*s){ //逐个打印栈内元素 
	Stack *a=s;
	while(a){
		printf("%d ",a->data);
		a=a->next;
	}
}

链式栈的出栈操作

Stack* pop(Stack* s,int *newnum) {//链式栈的出栈操作
	if (s==NULL) {
		printf("栈已空");
		return NULL;
	}
	else {
		*newnum = s->data;
		Stack* p = s;
		s = s->next;
		free(p);
		return s;
	}
}

然后我们在主函数测试一下这些函数:

int main()
{
	Stack *s;
	s=InitStack(s);
	int i;
	for(i=1;i<=10;i++){
		s=push(s,i);
	}
	print(s);	
}

运行结果:
在这里插入图片描述

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

链式栈(c) 的相关文章

  • Excel中的散点图这么强大,学习了!

    全世界只有3 14 的人关注了 数据与算法之美 平时见得最多的也许是柱形图了 但我个人最喜欢的却是散点图 在讲散点图之前 我先阐述一个不太严谨的个人观点 我认为 所有的数据图表都可以分为两类 一类是偏重于展示 一类是偏重于研究 如何理解 偏
  • !!!RFID原理及应用期末复习总结!!!少走弯路,直接满绩!

    选用教材 RFID原理及应用 清华大学出版社 第一章 概述 学习目标 什么是RFID RFID的发展史 RFID的构成及各模块功能 RFID的几种分类 RFID的应用领域 射频识别 RFID RFID技术 又称射频识别 是一种通信技术 可通
  • 《深入理解Java虚拟机》学习笔记

    JDK 用于支持Java程序开发的最小环境 包括Java程序设计语言 Java虚拟机 JavaAPI三部分 JRE 支持Java程序运行的标准环境 包括Java SE API子集和Java虚拟机 第一章 Java虚拟机发展史 1 Sun C
  • 3.取石头 (15分)

    题目内容 有一堆石子 A B两人轮流从中取出石子 每次取出的石子数目只能为1 3 7或8 最后一枚石子谁取到就是输方 A B两人都足够聪明 不会做出错误的判断 现给出一定数目的石子 A先取石子 计算A最终是输是赢 赢用1表示 输用0表示 输
  • 灰狼(GWO)算法(附完整Matlab代码,可直接复制)

    尊重他人劳动成果 请勿转载 有问题可留言或私信 看到了都会回复解答 其他算法请参考 1 粒子群 PSO 优化算法 附完整Matlab代码 可直接复制 https blog csdn net xinzhi1992 article detail
  • Redisson分布式锁

    SpringBoot集成Redisson步骤

随机推荐

  • GeoServer基础教程(五):使用GeoServer和OpenLayers发布地图服务

    转载 https ethanblog com tech publish wms with geoserver and openlayers html 在前面几节的关于GeoServer的基础教程中 我们介绍了如何使用GeoServer发布地
  • Oracle中case when详解

    格式 格式一 case when conditionalExpression 01 then result 01 when conditionalExpression 02 then result 02 when conditionalEx
  • linux下opencv2.4 静态库编译与使用(针对内网主机无法安装opencv情况下使用)

    linux下opencv2 4 静态库编译与使用 针对内网主机无法安装opencv情况下使用 1 如果内网主机无法通过网络安装opencv环境 此时需要使用静态库编译方法生成opencv应用程序 此时需要opencv相关的libxx a 2
  • ElasticSearch IK分词器配置远程词典

    ElasticSearch IK分词器配置远程词典 1 在线安装IK分词器 2 IK分词器的弊端 3 解决措施 配置远程词典实时更新 补充 1 在线安装IK分词器 ElasticSearch中默认的分词器是standard 该分词器对中文按
  • 每日一题:序列操作

    序列操作 题目 Daimayuan Online Judge 没啥思路 如果暴力的话肯定会超时 太难了太难了 参考了题解想了好久才弄懂 该题是思维题 操作1是将第x个数变为y 输入的时候就可以修改值了 毕竟只要一个语句就行 每次操作都是将x
  • seata 1.4.2 执行seata-server.bat报错:Could not create connection to database server.

    seata 1 4 2 执行seata server bat报错 18 40 17 778 ERROR tionPool Create 343563528 com alibaba druid pool DruidDataSource cre
  • 网络整理续

    计算机网络简答题 1 TCP 协议和 UDP 协议的区别有哪些 1 TCP 属于面向连接的协议 UDP 属于面向无连接的协议 2 TCP 可以保证数据可靠 有序的传输 可以进行流量控制 UDP 无法实现 3 TCP 协议有效载荷小于 UDP
  • Linux下20个常用Linux性能监控工具/命令

    此文章不作为商业用途 纯粹的用来学习 20个常用Linux性能监控工具 命令 对于 Linux Unix 系统管理员非常有用的并且最常用的20个命令行系统监视工具 这些命令可以在所有版本的 Linux 下使用去监控和查找系统性能的实际原因
  • vscode实用快捷键查找和替换

    vscode是一款功能十分强大的编辑器 且带有许多插件 利用插件可以让开发速度提升几倍甚至几十倍 vscode快捷键 查找 单文件查找 ctrl F 替换 单文件内替换一处 crtl shift 1 单文件内替换全部 ctrl alt en
  • mybatis-plus中wrapper的用法(详细)

    用到了wrapper ge le ne eq等的用法 及多表查询自写sql整理资料记录一下 以备后续复习 目录 可点击相应目录直接跳转 一 条件构造器关系介绍 条件构造器关系介绍 wapper介绍 二 项目实例 1 根据主键或者简单的查询条
  • 优秀程序员和一般程序员有什么区别?

    优秀程序员和一般程序员有什么区别 为什么有的人一入职就能平步青云 而有的人入职很久却一直在原地打转 程序员的职场进阶之路到底有多少门道 今天 我们邀请到了前Google Top Performer 来Offer的闫老师 给大家分享一下他的职
  • gitlab CI/CD系列之使用 GitLab Runner注册和基本环境配置

    由于很多时候我们的环境搭建都是在已经在对应的设备上搭建完成 或者是我们直接使用一个配置好的docker容器 开机自动启动 作为ci cd的运行环境 所以为了便利性这里主要使用的是shell模式 简介 理解了上面的基本概念之后 有没有觉得少了
  • netty-all 简介、中文文档、中英对照文档 下载

    netty all 文档 下载链接 含jar包 源码 pom 组件名称 中文 文档 下载链接 中英对照 文档 下载链接 netty all 4 0 50 Final jar netty all 4 0 50 Final API文档 中文版
  • 头歌实践教学平台数据结构与算法:02线性表

    针对数据结构02线性表在头歌平台练习过程中的完成代码 关卡数目较多 每题思路单独在每一关中解释 如有其他需求请留言 第一关 可以把问题转换为 遍历B中的元素 如果该元素不在A中 则把该元素插入到A中 由于集合中的元素没有先后顺序 因此 插入
  • Vue项目之登录注册

    Vue项目之登录注册 1 注册 1 1 注册页面的布局 1 2 注册业务逻辑的实现 2 登录 3 导航守卫 3 1全局导航守卫 全部路由都会经过这里 一定要调用next方法向下执行 3 2 路由独享的导航守卫 3 3 组件内的导航守卫 补充
  • ReactHook RefHook

    1 除了可以进行ref操作以外 还能进行数据存储的操作 即相当于在函数式组件中拥有了this 2 ref的改变不会引起组件的重新渲染 1 引入 import React Component useRef from react 2 使用ref
  • APP 抓包和微信小程序抓包-Charles 的精简使用教程

    APP 抓包和微信小程序抓包 Charles 的精简使用教程 2021 09 25 更新 2019 07 10 更新 目标 教程 一 安装 Charles 二 Charles 简介 1 Charles 欢迎页面 2 基础功能按钮 3 抓包内
  • 可视化爬虫框架spiderflow入门及实战

    官网 点击直达官网 文档 点击查看官网文档 说明 目前官网和文档均无法正常访问 原因未知 参考本文即可 再有问题欢迎留言讨论 以下内容部分来自官网或官网文档 文章比较长 请准备好瓜子和小板凳 TIP 文中用到的网站地址仅为了说明功能 如有侵
  • Android——微信登录、分享

    写在前面的话 应用要接入微信登录 分享 需要在微信的开发者平台上进行提交应用 并且审核通过 应用已经获取到appId 相关jar包下载地址 http download csdn net detail sapce fish 9571142 也
  • 链式栈(c)

    链式栈 在上节我们提到了顺序栈 而链式栈就是把顺序栈用链表的方式来存储 如果对链表和顺序栈的学习较为深刻的话 学习链式栈会非常容易 首先第一步和单链表操作基本相同 创建一个结构体 一块是数据域 另一块是指针域 用来指向下一个元素 typed