栈-顺序存储链式存储

栈是只允许在一端进行插入或删除操作的线性表。

An <-- 栈顶
...
A4
A3
A2
A1
A1 <-- 栈底

顺序存储实现栈

_
a1
a2
a3
a4
#include <stdio.h>#define MAXSIZE 50
typedef int ElemType;typedef struct {// 数组ElemType data[MAXSIZE];// 始终指向栈顶int top;
} SqStack;/** 初始化栈*/
void init_stack(SqStack &S) {// top等于-1时表示栈为空S.top = -1;
}/** 判断栈是否为空*/
bool stack_empty(SqStack S) {if (-1 == S.top) {return true;} else {return false;}
}/** 入栈*/
bool push(SqStack &S, ElemType data) {// 判断是否栈满if (MAXSIZE - 1 == S.top) {return false;}// S.top = S.top + 1// S.data[S.top] = dataS.data[++S.top] = data;return true;
}/** 获取栈顶元素*/
bool get_top(SqStack S, ElemType &elem) {// 判断栈是否为空if (stack_empty(S)) {return false;}elem = S.data[S.top];return true;
}/** 出栈*/
bool pop(SqStack &S, ElemType &elem) {// 判断栈是否为空if (stack_empty(S)) {return false;}// elem = S.data[S.top]// S.top = S.top - 1elem = S.data[S.top--];return true;
}int main() {// 一、定义一个栈SqStack S;// 二、初始化栈init_stack(S);// 三、判断是否为空bool flag = stack_empty(S);if (flag) {printf("stack is empty!\n");}// 四、入栈push(S, 3);push(S, 4);push(S, 5);// 五、获取栈顶元素ElemType elem;flag = get_top(S, elem);if (flag) {printf("get top: %d\n", elem);}// 六、出栈flag = pop(S, elem);if (flag) {printf("pop element: %d\n", elem);}return 0;
}

链式存储实现栈

链表头插法实现入栈,链表头删法实现出栈。

#include <stdio.h>
#include <stdlib.h>typedef int ElemType;
typedef struct LStack {ElemType data;struct LStack *next;
} LStack, *LinkStack;int main() {// 栈LinkStack S = (LinkStack) malloc(sizeof(LStack));S->next = NULL;// 栈顶LinkStack top = (LinkStack) malloc(sizeof(LStack));top->next = NULL;// 入栈 链表头插法top->data = 1;top->next = S->next;S->next = top;// 出栈 链表头删法ElemType c = top->data;S->next = top->next;free(top);top = S->next;// 判断栈空栈满if (NULL == S->next) {printf("stack is empty\n");}// 只要内存足够 栈可以继续添加元素return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA中的乒乓操作

为什么不直接选用一个缓存更大的FIFO而选用乒乓操作为什么乒乓操作可以实现低速处理高速数据乒乓操作适用哪些场景 一、乒乓操作结构 首先先介绍一下乒乓操作的原理&#xff0c;其结构如下&#xff1a; 输入选择单元负责将数据送到数据缓冲模块&#xff0c;然后输出选择单元负…

面试题vue+uniapp(个人理解-面试口头答述)未编辑完整....

1.vue2和vue3的区别&#xff08;vue3与vue2的区别&#xff08;你不知道细节全在这&#xff09;_vue2和vue3区别-CSDN博客&#xff09;参考 Vue3 在组合式&#xff08;Composition &#xff09;API&#xff0c;中使用生命周期钩子时需要先引入&#xff0c;而 Vue2 在选项API&am…

使用迭代最近点 (ICP) 算法在 Open3D 中对齐点云

一、Open3D 简介及其功能 Open3D 是一个现代库&#xff0c;它提供了用于处理 3D 数据的各种工具。在其功能中&#xff0c;它提供了高效的数据结构和算法来处理点云、网格等&#xff0c;使其成为在计算机视觉、机器人和图形领域工作的研究人员和从业人员的不错选择。Open3D 的特…

2023 N1CTF Junior pwn 顶级签到

文章目录 参考make_pairstring_view和stringstd::string 的内部实现和特点std::string_view 的内部实现和特点例子说明 SSO(Short String Optimization)和堆分配源码思路exp 参考 https://zqy.ink/2023/05/12/dingjiqiandao/ make_pair 该函数的作用是解析用户输入的登录信息…

力扣--最大子数组和

给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] 输出&#xff1a;…

头歌处理机调度与死锁--银行家算法第1关:安全性检查

测试说明 平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试: 输入格式说明: 第1行是系统的进程数N 第2行是系统的资源类别数M 第3行是系统的资源总数,一共有M个数值,每个数值是一类资源的总数。 第4行开始一共有N行,…

2024 年最新安装MAC-vue教学包括常见错误

花了一上午时间终于将 vue 的工程文件安装好了&#xff0c;本教材是傻瓜式操作&#xff0c;按着教程一步一步操作最后就可以看到页面了。 安装Node 1.在线地址&#xff1a; https://nodejs.org/en 2、点击 Download Node.js下载即可&#xff0c;下载完成后&#xff0c;傻瓜式的…

primeflex Display盒模型显示相关样式实战案例

01 Display盒子模式相关样式 基础样式 ClassPropertieshiddendisplay: none;blockdisplay: block;inlinedisplay: inline;inline-blockdisplay: inline-block;flexdisplay: flex;inline-flexdisplay: inline-flex; 样式说明&#xff1a; hidden&#xff1a;隐藏&#xff0c…

c# 学习教程

打印语句 折叠代码 变量 整形 浮点型 特殊类型

林业调查具体是做些什么?

林业调查是对森林资源进行系统的信息收集和处理的过程。 林业调查涵盖了对林木、林地以及林区内生长的动植物及其环境条件的全面评估&#xff0c;旨在及时掌握森林资源的数量、质量和生长消亡的动态规律。这种调查不仅关注森林本身&#xff0c;还包括与之相关的自然环境和经济…

游戏心理学Day01

心理学 心理学是一门研究心理过程和行为及其如何受有机体的生理&#xff0c;心理状态和外部影响的科学 心理学不是常识的代名词&#xff0c;心理学分为基础&#xff0c;心理学和应用心理学基础&#xff0c;心理学研究的目的在于描述&#xff0c;解释&#xff0c;预测和控制行…

网络协议学习笔记

HTTP协议 简单介绍 HTTP属于应用层 HTTP可以简单的理解成类似json一样的文本封装&#xff0c;但是这是超文本&#xff0c;所以可以封装的不止有文本&#xff0c;还有音视频、图片等 请求方法 HTTP报文格式 三大部分 起始行&#xff1a;描述请求或响应的基本信息头部字段…

企业级win10电脑下同时存在Python3.11.7Python3.6.6,其中Python3.6.6是后装的【过程与踩坑复盘】

背景&#xff1a; 需要迁移原始服务器的上的Python3.6.6Flask项目到一个新服务器上&#xff0c; 新服务器上本身存在一个Python3.11.7, 所以这涉及到了一个电脑需要装多个Python版本的问题 过程&#xff1a; 1-确定新电脑版本【比如是32还是64位】 前面开发人员存留了两个…

Python 点云生成高程模型图(DSM)

点云生成高程模型图 一、什么是DSM?二、python代码三、结果可视化一、什么是DSM? DSM(Digital Surface Model)是一种数字高程模型,通常用于描述地表地形的数字化表示。它是由一系列离散的高程数据点组成的三维地形模型,其中每个点都具有其相应的高程值。   DSM主要用于…

算法练习第26天|46.全排列、47全排列II

46.全排列 46. 全排列 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/permutations/description/ 题目描述&#xff1a; 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a;…

HTML、ASP.NET、XML、Javascript、DIV+CSS、JQuery、AJax的起源与简介

目录 HTML简介: 起源&#xff1a; ASP.NET简介&#xff1a; 起源: XML简介: 起源: JavaScript简介&#xff1a; 起源: DIVCSS简介: 起源&#xff1a; JQuery简介: 起源: AJax简介&#xff1a; HTML简介: HTML(Hyper Text Markup Language&#xff0c;超文本标记语言…

STM32 | 超声波实战

​01、上节回顾 STM32 | HC-SR04 超声波测距模块 | DHT11数字温湿度传感器(第七天)STM32 | 数字温湿度传感器DHT11STM32 | HC-SR04 超声波测距模块STM32 | DHT11数字温湿度传感器实战02、超声波图示 03、超声波头文件 #ifndef __SR04_H#define __SR04_H​#include "stm…

在鸿蒙中身份校验的手势密码的实现

在harmony中它提供了默认的组件PatternLock()&#xff1b; 这个就能直接显示九宫格密码验证 并且他有两个主要的回调事件 .onDotConnect密码输入选中宫格圆点时触发该回调 .onPatternComplete&#xff1a;密码输入结束时触发该回调 //如代码实现 PatternLock().sideLength(32…

OceanBase 内存研究(OceanBase 3.2.4.5)

内存结构 从官网的结构图可以看出&#xff0c;一台observer可使用的总内存(memory_limit)包括 系统内存(system_memory) 和 租户内存(sys租户与普通租户) 系统内存 系统内存system_memory 属于 observer 的内部内存&#xff0c;允许其它租户共享使用该内存资源 (root10.0.0.…

vmware 正版免费下载

Broadcom 已经收购了 vmware 并且对普通用户提供免费服务. 那么我们怎么去获取这个玩意呢, 注册完之后打开就是这么个狗屎 , 根本不知道在哪里下载&#xff0c;注册的时候还不能用国内邮箱更是超级狗屎 转到 dashboard 搜索 workstation Pro你会搜索到这么一个奇怪的网址然后…