当前位置: 首页 > news >正文

3. 数据结构——栈的操作实现

1. 顺序栈

主要操作:初始化、栈判空、入栈、出栈、去栈顶元素

1.1 直接数组存储栈

//顺序栈的实现 
#include<stdio.h>
#define MaxSize 50
typedef int ElemType;
typedef struct{ElemType data[MaxSize];int top;  //指向栈顶指针,最开始-1 
}SqStack;//1.初始化
void InitStack(SqStack &S){S.top=-1;
}//2.判栈空
bool StackEmpty(SqStack S){return S.top==-1;
} //3.进栈
bool Push(SqStack &S,ElemType x){if(S.top==MaxSize-1)  //栈已满 return false;S.data[++S.top]=x; return true;
} //4. 出栈
bool Pop(SqStack &S,ElemType &x){if(S.top==-1)  //栈空不能取出元素 return false;x=S.data[S.top--];   return true; 
} //5.读栈顶元素
bool getTop(SqStack S,ElemType &x){if(S.top==-1)return false;x=S.data[S.top];return true;
} 

1.2 *top和*base指针指向栈顶和栈底位置

#include<stdio.h>
#include<stdlib.h>#define OK 1
#define OVERFLOW -2
#define ERROR 0
#define MAXSIZE 100typedef int ElemType;
typedef int Status;typedef struct{ElemType *base,*top;  //栈底指针、栈顶指针int stacksize;   //栈可用的最大容量 
}SqStack;//1.初始化
Status InitStack(SqStack &S){S.base=(ElemType*)malloc(sizeof(ElemType)*MAXSIZE);
//	S.base=new ElemType[MAXSIZE];if(!S.base)  //分配内存失败 return OVERFLOW;S.top=S.base;  //初始化的时候栈顶和栈底指针均指向第一个元素S.stacksize=MAXSIZE;return OK; 
} //2.入栈
Status Push(SqStack &S,ElemType e){if(S.top-S.base==S.stacksize)  //栈满 return ERROR;*S.top++=e;  //先赋值后自增return OK; 
}//3.出栈
Status Pop(SqStack &S,ElemType &e){if(S.base==S.top)  //栈空 return ERROR;e=*--S.top; return OK;
} //4. 取栈顶元素
Status GetTop(SqStack S,ElemType &e){if(S.base==S.top)  //栈空 return ERROR;e=*(S.top-1); return OK;
} 

2. 链栈(不带头节点,以链头做为栈顶)

主要操作:初始化、栈判空、入栈、出栈、去栈顶元素、销毁栈

//栈的链式存储结构(不带头节点,以链头为栈顶) 
#include<stdio.h>
#include<stdlib.h> 
typedef int ElemType;
typedef struct StackNode{ElemType data;struct StackNode *next;
}StackNode ,*LinkStack;//1.初始化
bool InitStack(LinkStack &S){S=NULL;return true;
}//2.判栈空
bool StackEmpty(LinkStack S){return S==NULL;
} //3.进栈
bool Push(LinkStack &S,ElemType x){LinkStack p=(StackNode*)malloc(sizeof(StackNode));p->data=x;p->next=S;S=p;return true;
} //4. 出栈
bool Pop(LinkStack &S,ElemType &x){if(S==NULL)return false;x=S->data;LinkStack p=S;S=S->next;free(p);  //释放空间 return true;
} //5.读栈顶元素
bool getTop(LinkStack S,ElemType &x){if(S==NULL)   //栈为空 return false;	x=S->data;return true; 
}//6.销毁队列
void DestroyStack(LinkStack &S){while(S!=NULL){LinkStack p=S;S=S->next;free(p); p=NULL;}
} 

相关文章:

3. 数据结构——栈的操作实现

1. 顺序栈 主要操作&#xff1a;初始化、栈判空、入栈、出栈、去栈顶元素 1.1 直接数组存储栈 //顺序栈的实现 #include<stdio.h> #define MaxSize 50 typedef int ElemType; typedef struct{ElemType data[MaxSize];int top; //指向栈顶指针&#xff0c;最开始-1 …...

EmguCV学习笔记 VB.Net 4.5 像素距离和连通区域

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 教程VB.net版本请访问&#xff1a;EmguCV学习笔记 VB.Net 目录-CSDN博客 教程C#版本请访问&#xff1a;EmguCV学习笔记 C# 目录-CSD…...

使用spring boot开发与直接开发一个web项目的区别

1. 项目结构的区别 springboot开发没有web.xml&#xff0c;配置更加简洁。 2. 启动 传统的web项目将项目打成war包&#xff0c;然后将war包复制到tomcat的webapp目录下&#xff0c;最后通过启动tomcat部署运行项目。 而springboot将项目打成jar包&#xff0c;jar包中包含内置的…...

Leetcode JAVA刷刷站(48)旋转图像

一、题目概述 二、思路方向 要在原地顺时针旋转一个 n x n 的二维矩阵 90 度&#xff0c;你可以通过一系列交换操作来实现。这里的关键在于理解旋转后的矩阵与原矩阵之间的元素对应关系。 假设原矩阵为 matrix&#xff0c;其中 matrix[i][j] 表示第 i 行第 j 列的元素。旋转 90…...

编译型语言和解释型语言

年代区分 从硬件技术和软件需求&#xff0c;计算机发展初期&#xff0c;没有可能发展真正的解释型语言&#xff0c;运行速度和内存都受限&#xff0c;只有给机器喂二进制代码才能勉强跑起来。但事实上&#xff0c;解释型语言却在计算机发展很早的时期曾经出现过&#xff0c;当…...

TensorRT 和 PyTorch区别

一、TensorRT 和 PyTorch TensorRT 和 PyTorch 是两个不同的深度学习工具&#xff0c;虽然它们可以用于处理相同类型的任务&#xff0c;但它们的用途、特点和设计目标有所不同。 TensorRT 简介 TensorRT 是 NVIDIA 开发的一款高性能深度学习推理引擎&#xff0c;主要用于优化…...

iOS 17.6.1版本重发,修复高级数据保护错误

今日&#xff0c;苹果没有带来iOS 17.6.2的更新&#xff0c;而是重新发布了iOS 17.6.1版本&#xff0c;本次升级版本号为21G101&#xff0c;高于第一版的21G93。距离初版发布相隔一周半时间。 在 iOS / iPadOS 17.6.1 的更新日志&#xff0c;苹果公司写道&#xff1a;“此更新包…...

【排序算法】八大排序(上)(c语言实现)(附源码)

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;算法 目录 前言 写一串测试数据 交换两元素的函数 一、冒泡排序 二、选择排序 三、插入排序 四、希尔排序 程序全部代码 总结 前言 排序算法是计算机科…...

Python版《超级玛丽+源码》-Python制作超级玛丽游戏

小时候最喜欢玩的小游戏就是超级玛丽了&#xff0c;有刺激有又技巧&#xff0c;通关真的很难&#xff0c;救下小公主还被抓走了&#xff0c;唉&#xff0c;心累&#xff0c;最后还是硬着头皮继续闯&#xff0c;终于要通关了&#xff0c;之后再玩还是没有那么容易&#xff0c;哈…...

互联网私有IP地址列表

最近因为业务需要&#xff0c;要判断用户的IP是否私有IP&#xff0c; 以前知道的私有IP&#xff0c;基本上只有如下几个(注意&#xff1a;这不是正确答案)&#xff1a; 10.0.0.0/8&#xff08;10.0.0.0-10.255.255.255&#xff09;172.16.0.0/12&#xff08;172.16.0.0-172.31…...

光伏项目管理软件为什么那么多光伏人在用?

在光伏行业迅速发展的今天&#xff0c;光伏项目管理软件已成为众多光伏从业者不可或缺的得力助手。那么&#xff0c;为何这款软件能够受到如此广泛的青睐和应用呢&#xff1f; 一、提高项目管理效率 光伏项目管理软件通过数字化、智能化的手段&#xff0c;对光伏项目的各个环节…...

《AOP实战》— 自定义注解

承接上文&#xff08;传送门 —>《面试必考》 — AOP-CSDN博客&#xff09;&#xff0c;在被面试官拷打的时候&#xff0c;会被问到一个致命问题&#xff1a;“你了解aop吗&#xff1f;有具体的使用经验吗&#xff1f;” 你&#xff1a;......... 言尽于此&#xff0c;此篇…...

微前端架构下的单页应用实现策略

随着Web应用的复杂性日益增加&#xff0c;传统的多页应用&#xff08;MPA&#xff09;模式已经难以满足现代Web开发的需求。单页应用&#xff08;SPA&#xff09;以其流畅的用户体验和高效的页面加载速度&#xff0c;逐渐成为Web开发的主流模式。然而&#xff0c;在微前端架构下…...

JWT(JSON Web Token)工作原理及特点

JWT定义 概念&#xff1a;JWT是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;用于在网络上安全传输信息&#xff0c;常用于身份验证。比喻&#xff1a;类似于电子通行证&#xff0c;包含用户身份信息&#xff0c;用于身份验证和享受服务。 JWT组成部分 头部&am…...

【体检】程序人生之健康检查,全身体检与预防疫苗,五大传染病普筛,基因检测等

程序员养生指南之 【体检】程序人生之健康检查&#xff0c;全身体检项目分类&#xff0c;五大传染病普筛&#xff0c;基因检测等 文章目录 一、全身体检与预防疫苗&#xff08;年检&#xff09;1、实验室检测&#xff1a;生化全套检查2、医技检查&#xff1a;辅助诊疗科室3、科…...

汇编语言中的指令锁定:解锁高效并发编程

标题&#xff1a;汇编语言中的指令锁定&#xff1a;解锁高效并发编程 在汇编语言的微观世界中&#xff0c;指令锁定&#xff08;Instruction Locking&#xff09;是一种确保数据一致性和操作原子性的关键机制。通过使用特定的lock前缀&#xff0c;开发者可以告诉CPU在执行多处…...

《人工智能时代:金融投资决策的潜在系统性风险及防范策略》

在当今数字化飞速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;在金融领域的应用日益广泛&#xff0c;特别是在投资决策方面展现出了巨大的潜力。然而&#xff0c;随着其影响力的不断扩大&#xff0c;我们也必须警惕潜在的系统性风险。 人工智能在金融投资决策中…...

MT7621+MT7915(MT7905)+MT7975 (W7621A6G-SDK)编译固件与升级固件方法

一、搭建开发环境&#xff0c;编译固件。 1、安装在Ubuntu 14.04.5 x86_64系统后&#xff0c;然后安装下面命令行。 $ sudo apt-get install git g make libncurses5-dev subversion libssl-dev gawk libxml-parser-perl unzip wget python xz-utils vim zlibc zlib1g zlib1g…...

[php:\\filter]

写入 #题目 <?php $filename$_GET[filename]; $content$_POST[content]; file_put_contents($filename,<?php exit();.$content); highlight_file(__FILE__); ?> 源码如上&#xff0c;需要再服务器上写入一句话木马 payload如下&#xff1a; #<?php phpinf…...

Linux-环境变量

文章目录 第6章 Linux 环境变量6.1 环境变量简介&#xff1f;6.2 全局变量6.3 局部环境变量6.4 设置用户自定义变量6.4.1 设置局部用户自定义变量6.4.2 设置全局环境变量6.4.3 删除环境变量 6.5 默认的shell环境变量6.6 设置PATH环境变量6.7 定位系统环境变量6.7.1 登录shell6.…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

selenium学习实战【Python爬虫】

selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...