数据结构---顺序栈、链栈

特点

typedef struct Stack { int* base; //栈底 int* top;//栈顶 int stacksize //栈的容量; }SqStack;
typedef struct StackNode { int data;//数据域 struct StackNode* next; //指针域 }StackNode,*LinkStack;

顺序栈

#define MaxSize 100
typedef struct Stack { int* base; int* top; int stacksize; }SqStack;//***********************************   基本操作函数  *******************************************int InitStack(SqStack& s)
{s.base = new int[MaxSize];s.top = s.base;s.stacksize = MaxSize;return 1;}int Push(SqStack& s, int e)		// Push入栈,到XXX	eg: pushd...
{if(s.top-s.base==s.stacksize)	return 0;*(s.top++) = e;		return 1;
}int Pop(SqStack& s, int e) {if(s.top==s.base)	return 0;e = *--s.top;	 return 1;		// 1、减减		2、指向栈顶元素		3、再给e
}	bool GetTop(SqStack& s, int e) {if(s.top=s.base)	return false;else   e = *--s.top;	return true;
}//********************************功能实现函数**************************************//void PushToStack(SqStack& s) {int n; int e; int flag;printf("请输入入栈元素个数(>=1):\n");scanf("%d", &n);for (int i = 0; i < n; i++){printf("请输入第%d个元素的值:", i + 1);scanf("%d", &e);flag = Push(s, e);if (flag)printf("%d已入栈\n", e);else { printf("栈已满!!!\n"); break; }}
}void PopFromStack(SqStack& s) {int n; int e; int flag;printf("请输入出栈元素个数(>=1):\n");scanf("%d", &n);for (int i = 0; i < n; i++){flag = Pop(s, e);if (flag)printf("%d已出栈\n", e);else { printf("栈已空!!!\n"); break; }}
}void GetTopOfStack(SqStack& s){int e; bool flag;flag = GetTop(s, e);if (flag)printf("栈顶元素为:%d\n", e);else printf("栈已空!!!\n");
}void memu() {printf("********1.入栈      2.出栈*********\n");printf("********3.取栈顶    4.退出*********\n");
}int main() {int choice = 0;;SqStack s;InitStack(s);switch (choice){case 1:PushToStack(s); break;case 2:PopFromStack(s); break;case 3:GetTopOfStack(s); break;;default:printf("输入错误!!!\n");break;}return 0;
}

链栈

typedef struct StackNode { int data; struct StackNode* next; }StackNode,*LinkStack;//***********************************   基本操作函数  *******************************************int InitStack(LinkStack &s)
{s = NULL;return 1;}int Push(LinkStack &s, int e)		
{StackNode* p;//生成新节点p = new StackNode;//赋值p->data = e;p->next = s;//压入栈顶s = p;return 1;
}bool Pop(LinkStack& s ,int& e)
{LinkStack p;if (s == NULL)return false;//栈空e = s->data;p = s;s = s->next;free(p);return true;
}bool GetTop(LinkStack &s, int &e) 
{if (s == NULL) return false;//栈顶为空e = s->data;return true;
}//********************************功能实现函数**************************************//void PushToStack(LinkStack& s) {int n; int e; int flag;printf("请输入入栈元素个数(>=1):\n");scanf("%d", &n);for (int i = 0; i < n; i++){printf("请输入第%d个元素的值:", i + 1);scanf("%d", &e);flag = Push(s, e);if (flag)printf("%d已入栈\n", e);}}void PopFromStack(LinkStack& s) {int n; int e; int flag;printf("请输入出栈元素个数(>=1):\n");scanf("%d", &n);for (int i = 0; i < n; i++){flag = Pop(s, e);if (flag)printf("%d已出栈\n", e);else { printf("栈已空!!!\n"); break; }}
}void GetTopOfStack(LinkStack& s){int e; bool flag;flag = GetTop(s, e);if (flag)printf("栈顶元素为:%d\n", e);else printf("栈已空!!!\n");
}void memu() {printf("********1.入栈			2.出栈*********\n");printf("********3.取栈顶元素    4.退出*********\n");
}int main() {int choice = 0;;LinkStack s;InitStack(s);switch (choice){case 1:PushToStack(s); break;case 2:PopFromStack(s); break;case 3:GetTopOfStack(s); break;;default:printf("输入错误!!!\n");break;}return 0;
}

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

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

相关文章

PyTorch quantization observer

文章目录 PyTorch quantization observerbasic classstandard observersubstandard observer PyTorch quantization observer basic class nameinheritdescribeObserverBaseABC, nn.ModuleBase observer ModuleUniformQuantizationObserverBaseObserverBase standard observ…

智慧工厂4G+蓝牙+UWB+RTK人员定位系统解决方案

人员定位在智慧工厂的应用正逐渐受到重视&#xff0c;通过使用现代化的技术和智能终端设备&#xff0c;工厂管理者能够实时定位和跟踪员工的位置&#xff0c;方便进行人员调度管理和监督人员的工作情况&#xff1b;人员遇到紧急情况&#xff0c;可通过定位设备一键报警求救&…

vue 快速自定义分页el-pagination

vue 快速自定义分页el-pagination template <div style"text-align: center"><el-paginationbackground:current-page"pageObj.currentPage":page-size"pageObj.page":page-sizes"pageObj.pageSize"layout"total,prev,…

安全文件传输:如何降低数据丢失的风险

在当今数字化时代&#xff0c;文件传输是必不可少的一项工作。但是&#xff0c;数据丢失一直是一个令人头疼的问题。本文将探讨一些减少数据丢失风险的方法&#xff0c;包括加密、备份和使用可信的传输协议等。采取这些措施将有助于保护数据免受意外丢失的危险。 一、加密保护数…

24考研数据结构-栈

目录 第三章 栈和队列3.1栈&#xff08;stack&#xff09;3.1.1栈的基本概念栈的基本概念知识回顾 3.1.2 栈的顺序存储上溢与下溢栈的顺序存储知识回顾 3.1.3栈的链式存储链栈的基本操作 第三章 栈和队列 3.1栈&#xff08;stack&#xff09; 3.1.1栈的基本概念 栈的定义 栈…

通过ETL自动化同步飞书数据到本地数仓

一、飞书数据同步到数据库需求 使用飞书的企业都有将飞书的数据自动同步到本地数据库、数仓以及其他业务系统表的需求&#xff0c;主要是为了实现飞书的数据与业务系统进行流程拉通或数据分析时使用&#xff0c;以下是一些具体的同步场景示例&#xff1a; 组织架构同步&#…

9.NIO非阻塞式网络通信入门

highlight: arduino-light Selector 示意图和特点说明 一个 I/O 线程可以并发处理 N 个客户端连接和读写操作&#xff0c;这从根本上解决了传统同步阻塞 I/O 一连接一线程模型。架构的性能、弹性伸缩能力和可靠性都得到了极大的提升。 服务端流程 1、当客户端连接服务端时&…

ADS仿真低噪声放大器学习笔记

ADS仿真低噪声放大器 文章目录 ADS仿真低噪声放大器1. 安装晶体管的库文件2. 直流分析DC Tracing3. 偏置电路的设计4. 稳定性分析5. 输入匹配和输出匹配 设计要求&#xff1a; 工作频率&#xff1a;2.4~2.5GHz ISM频段 噪声系数&#xff1a;NF < 0.7 增益&#xff1a;Gain &…

__init__函数用法

__init__是Python类中的一个特殊方法&#xff08;special method&#xff09;&#xff0c;也称为构造函数。它在类实例化&#xff08;创建对象&#xff09;的过程中自动被调用&#xff0c;用于初始化对象的属性和执行其他必要的设置。 构造函数的完整命名是__init__()&#xf…

北斗gps卫星授时服务器(NTP)应用于防火墙场景

北斗gps卫星授时服务器&#xff08;NTP&#xff09;应用于防火墙场景 北斗gps卫星授时服务器&#xff08;NTP&#xff09;应用于防火墙场景 作为网络建设中不可或缺的两方面&#xff0c;在保证网络安全稳定以及时间同步精确性方面&#xff0c;防火墙和NTP服务器都极为重要。而防…

分享200+个关于AI的网站

分享200个关于AI的网站 欢迎大家访问&#xff1a;https://tools.haiyong.site/ai 快速导航 AI 应用AI 写作AI 编程AI 设计AI 作图AI 训练模型AI 影音编辑AI 效率助手 AI 应用 文心一言: https://yiyan.baidu.com/ 百度出品的人工智能语言模型 ChatGPT: https://chat.openai.c…

Matlab遍历文件及直方图统计

参考链接&#xff1a; 使用MATLAB遍历文件 strtrim用法 strsplit用法 cell单元数据使用{} close all; dir_path C:/Users/; fileFolder ls(dir_path); fileNum length(fileFolder(:,1)) - 2; for i 3:(3fileNum-1)file_path strcat(dir_path, strtrim(fileFolder(i,:)))…

推荐系统-ALS协同过滤算法实现

从协同过滤的分类来说&#xff0c;ALS&#xff08;Alternating Least Squares&#xff0c;交替最小二乘&#xff09;算法属于User-Item CF&#xff0c;也叫做混合CF&#xff0c;它同时考虑了User和Item两个方面&#xff0c;通过数量相对少的未被观察到的隐藏因子&#xff0c;来…

oracle-创建函数

oracle自定义函数 核心提示&#xff1a;函数用于返回特定数据。执行时得找一个变量接收函数的返回值; 语法如下: create or replace function function_name ( argu1 [mode1]datatype1, argu2 [mode2] datatype2, … ) return datatype is begin end; 执行 var v1 varchar2(1…

微信小程序上传手机内部文件,PC文件

看了太多人的文档&#xff0c;拆开&#xff0c;组合&#xff0c;终于成功完成了这个写法&#xff0c;从上周五&#xff0c;到今天周三&#xff0c;共花5天解决这个问题。 不需要任何所谓的网络上传&#xff08;浪费我好几天&#xff09;&#xff0c;不需要跨域&#xff0c;不需…

人脸检测实战-insightface

目录 简介 一、InsightFace介绍 二、安装 三、快速体验 四、代码实战 1、人脸检测 2、人脸识别 五、代码及示例图片链接 简介 目前github有非常多的人脸识别开源项目&#xff0c;下面列出几个常用的开源项目&#xff1a; 1、deepface 2、CompreFace 3、face_recogn…

【Python 实战】---- 批量识别图片中的文字,存入excel中【使用百度的通用文字识别】

分析 1. 获取信息图片示例 2. 运行实例 3. 运行结果 4. 各个文件的位置 实现 1. 需求分析 识别图片中的文字【采用百度的通用文字识别】;文字筛选,按照分类获取对应的文本;采用 openpyxl 实现将数据存入 excel 中。2. 获取 access_token 获取本地缓存的

网络安全大厂面试题

自我介绍 有没有挖过src&#xff1f; 平时web渗透怎么学的&#xff0c;有实战吗&#xff1f;有过成功发现漏洞的经历吗&#xff1f; 做web渗透时接触过哪些工具 xxe漏洞是什么&#xff1f;ssrf是什么&#xff1f; 打ctf的时候负责什么方向的题 为什么要搞信息安全&#xff0c;对…

数据结构之顺序表

一、概念及结构 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构&#xff0c;一般情况下采用数组存 储。在数组上完成数据的增删查改。 顺序表一般可以分为&#xff1a; 1. 静态顺序表&#xff1a;使用定长数组存储元素。 2. 动态顺序表&#xff1a;使用动…

基于粒子群优化算法(PSO)的Matlab、Python、Java、C++四种仿真实现(附上多个完整仿真源码)

PSO&#xff08;Particle Swarm Optimization&#xff09;是一种优化算法&#xff0c;它模拟了鸟群或鱼群等动物的集体行为&#xff0c;通过群体智能的方式来解决优化问题。PSO算法最初由Kennedy和Eberhart在1995年提出&#xff0c;近年来得到了广泛的应用。 本文将介绍PSO算法…