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

栈的基本操作(数据结构)

顺序栈的基本操作

#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#define MaxSize 10typedef struct{int data[MaxSize];int top;
}SqStack;//初始化栈
void InitStack(SqStack &S){S.top = -1;
} //判断栈空
bool StackEmpty(SqStack S){if(S.top==-1) return true;//空栈else return false; 
} //进栈
bool Push(SqStack &S,int x){if(S.top==MaxSize-1) return false;//满栈//S.data[++S.top] = x;与下面等价 S.top = S.top+1;//指针加1S.data[S.top]=x;//新元素入栈 return true; 
} //出栈
int Pop(SqStack &S){if(S.top==-1) return false;//空栈//x=S.data[S.top--];与下面等价int x;x = S.data[S.top];S.top = S.top-1; return x;
} //读取栈顶元素
int GetTop(SqStack &S){if(S.top==-1) return false;int x;x=S.data[S.top];return x;
} //输出栈 
bool PrintStack(SqStack &D){if(D.top==-1){printf("空栈");return false;}for(int i=D.top;i>=0;i--)printf("%d ",D.data[i]);printf("\n");return true;
}int main(){SqStack S;InitStack(S);printf("-----进栈-----\n");Push(S,1);Push(S,2);Push(S,3);Push(S,4);printf("栈内元素:");PrintStack(S);printf("栈顶元素:");int x;x = GetTop(S);printf("%d\n",x);printf("-----出栈-----\n");int y;y=Pop(S);printf("%d已经出栈\n",y);printf("栈内元素:");PrintStack(S);y=Pop(S);printf("%d已经出栈\n",y);printf("栈内元素:");PrintStack(S);y=Pop(S);printf("%d已经出栈\n",y);printf("栈内元素:");PrintStack(S);printf("栈顶元素:");int z;z = GetTop(S);printf("%d\n",z);return 0;
}

链栈的基本操作

#include <stdlib.h>
#include <iostream>
#include <stdio.h>
typedef struct LNode{int data;struct LNode *next;
}LNode,*LinkStack;LinkStack InitStack(LinkStack &D){D = (LNode *)malloc(sizeof(LNode));D->next=NULL;return D;
}//打印栈 
void PrintStack(LNode *p)
{LNode *temp;temp = p->next;printf("打印栈:");while(temp!=NULL){printf("%d ",temp->data);temp = temp->next;}printf("\n");
}//进栈 
LinkStack Push(LinkStack &D,int x){LNode *Q;Q = (LNode *)malloc(sizeof(LNode));Q->next = D->next;D->next = Q;Q->data = x;return D;
} //出栈 
int Pop(LinkStack &D){if(D->next==NULL) return false;LNode *Q;Q = (LNode *)malloc(sizeof(LNode));int x;Q = D->next;D->next = Q->next;x = Q->data;free(Q);return x;
} //获取栈顶元素
int GetTop(LinkStack &D){if(D->next==NULL) return false;int x;x = D->next->data;return x;
} int main(){LNode *D;InitStack(D);printf("-----开始进栈-----\n");Push(D,1);Push(D,2);Push(D,3);Push(D,4);Push(D,5);PrintStack(D);printf("-----栈顶元素-----\n");int z;z=GetTop(D);printf("栈顶元素为%d\n",z);printf("-----开始出栈-----\n");int x;x = Pop(D);printf("%d已经出栈\n",x);PrintStack(D);x = Pop(D);printf("%d已经出栈\n",x);PrintStack(D);printf("-----栈顶元素-----\n");int y;y=GetTop(D);printf("栈顶元素为%d\n",y);return 0;
}

相关文章:

栈的基本操作(数据结构)

顺序栈的基本操作 #include <stdlib.h> #include <iostream> #include <stdio.h> #define MaxSize 10typedef struct{int data[MaxSize];int top; }SqStack;//初始化栈 void InitStack(SqStack &S){S.top -1; } //判断栈空 bool StackEmpty(SqStack S)…...

D. Jellyfish and Mex Codeforces Round 901 (Div. 2)

Problem - D - Codeforces 题目大意&#xff1a;有一个n个数的数组a&#xff0c;数m初始为0&#xff0c;每次操作可以删除任意一个数&#xff0c;然后m加上那个数&#xff0c;求n次操作和m的最小值 1<n<5000&#xff1b;0<a[i]<1e9 思路&#xff1a;可以发现&am…...

操作系统内存管理相关

1. 虚拟内存 1.1 什么是虚拟内存 虚拟内存是计算机系统内存管理的一种技术&#xff0c;我们可以手动设置自己电脑的虚拟内存。不要单纯认为虚拟内存只是“使用硬盘空间来扩展内存“的技术。虚拟内存的重要意义是它定义了一个连续的虚拟地址空间&#xff0c;并且 把内存扩展到硬…...

Sui流动性质押黑客松获胜者公布,助力资产再流通

Sui流动质押黑客松于日前结束Demo Day演示&#xff0c;其中有五个团队获奖、六个团队荣誉提名&#xff0c;共有超过30个项目获得参赛资格。此外&#xff0c;有两个团队赢得了Sui上DeFi协议提供的赏金。 本次黑客松的目的是挖掘并奖励将流动质押功能集成到其apps和产品中的开发…...

为什么在使用PageHelper插件时,指定的每页记录数大小失效?显示所有的记录数

1.问题现象&#xff1a; 这里指定每页显示5条&#xff0c;却把所有的记录数都显示出来了 2.分析&#xff1a; 之前是可以的&#xff0c;然后发现&#xff1a;PageHelper.startPage(pageNum,pageSize) 和执行sql的语句 顺序颠倒了&#xff0c;然后就出错了。 3.验证&#xf…...

XML文档基础

什么是XML XML (eXtensible Markup Language&#xff0c;可扩展标记语言) 是一种用于存储和传输数据的文本文件格式。用户可以按照XML规则自定义标记&#xff0c;XML 的设计目标是传输数据&#xff0c;而不是显示数据&#xff0c;因此它是一种通用的标记语言&#xff0c;可用于…...

软考知识汇总-软件工程

软件工程 1 能力成熟度模型&#xff08;CMM&#xff09;2 能力成熟度模型集成&#xff08;CMMI&#xff09;2.1阶段式模型2.2 连续式模型 3 软件过程模型 1 能力成熟度模型&#xff08;CMM&#xff09; 将软件工程成熟度分为5个级别 初始级&#xff1a;杂乱无章&#xff0c;很…...

力扣:119. 杨辉三角 II(Python3)

题目&#xff1a; 给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09…...

指针笔试题(带解析版)

题目2&#xff1a; struct MyStruct {int num;char* pcname;short sdate;char cha[2];short sba[4]; }*p; //结构体大小为32字节 //p0x100000 int main() {p 0x100000;printf("%p\n", p 0x1);//p&#xff1a;结构体指针&#xff0c;1下一个结构体指针&#xff0c;…...

服务器搭建(TCP套接字)-libevent版(服务端)

Libevent 是一个开源的事件驱动库&#xff0c;用于开发高性能、并发的网络应用程序。它提供了跨平台的事件处理和网络编程功能&#xff0c;具有高性能、可扩展性和可移植性。下面详细讲解 Libevent 的主要组成部分和使用方法。 一、事件基础结构&#xff08;event_base&#x…...

斐波那契模型系列【动态规划】

动态规划步骤 1、状态表示 是什么&#xff1a;dp表&#xff08;可能是一维或二维数组&#xff09;里的值所表示的含义。 怎么来&#xff1a; 1、题目要求 2、经验题目要求 3、发现重复子问题 2、状态转移方程 dp[i]... 3、初始化 保证填表不越界 4、填表顺序 5、返回值 写代码时…...

【Java】微服务——Nacos注册中心

目录 1.Nacos快速入门1.1.服务注册到nacos1&#xff09;引入依赖2&#xff09;配置nacos地址3&#xff09;重启 2.服务分级存储模型2.1.给user-service配置集群2.2.同集群优先的负载均衡 3.权重配置4.环境隔离4.1.创建namespace4.2.给微服务配置namespace 5.Nacos与Eureka的区别…...

Redis Cluster Gossip Protocol: PING, PONG, MEET

返回目录 PING / PONG / MEET 的发送 过程 计算freshNodes。freshNodes表示在消息中能携带的&#xff0c;在cluster节点字典中的节点总数&#xff0c;但需要减去myself和对端节点&#xff0c;因为myself的信息会存储在消息头中。实际上&#xff0c;并非所有在cluster节点字典…...

httpserver 下载服务器demo 以及libevent版本的 httpserver

实现效果如下&#xff1a; 图片可以直接显示 cpp h 这些可以直接显示 其他的 则是提示是否要下载 单线程 还有bug 代码如下 先放上来 #include "httpserver.h" #include "stdio.h" #include <stdlib.h> #include <arpa/inet.h> #include…...

构建强大的RESTful API:@RestController与@Controller的对比与应用

构建强大的RESTful API&#xff1a;RestController与Controller的对比与应用 前言什么是RESTful APIRestController&#xff0c;Controller&#xff0c;ResponseBody1. Controller注解&#xff1a;2. RestController注解&#xff1a;3. ResponseBody注解&#xff1a; 示例非thy…...

【Java-LangChain:使用 ChatGPT API 搭建系统-10】评估(下)-当不存在一个简单的正确答案时

第十章&#xff0c;评估&#xff08;下&#xff09;-当不存在一个简单的正确答案时 在上一章中&#xff0c;了解了如何评估 LLM 模型在 有明确正确答案 的情况下的输出&#xff0c;我们可以编写一个函数来判断 LLM 输出是否正确地分类并列出产品。 然而&#xff0c;如果 LLM …...

【微服务的集成测试】python实现-附ChatGPT解析

1.题目 微服务的集成测试 知识点:深搜 时间限制: 1s 空间限制: 256MB 限定语言:不限 题目描述: 现在有n个容器服务,服务的启动可能有一定的依赖性 (有些服务启动没有依赖)其次服务自身启动加载会消耗一些时间。 给你一个 nxn 的二维矩阵 useTime,其中 useTime[i][i]=10 表示…...

Mesa新版来袭

Mesa 17.1.6 发布了&#xff0c;Mesa 是一个三维&#xff08;3D&#xff09;图形库的开源集合&#xff0c;其主要目标是在 Linux / UNIX 操作系统下实现各种 API&#xff08;应用程序编程接口&#xff09;和 OpenGL 规范。 它面向 3D 计算机图形&#xff0c;硬件加速 3D 渲染和…...

基于 SpringBoot 2.7.x 使用最新的 Elasticsearch Java API Client 之 ElasticsearchClient

1. 从 RestHighLevelClient 到 ElasticsearchClient 从 Java Rest Client 7.15.0 版本开始&#xff0c;Elasticsearch 官方决定将 RestHighLevelClient 标记为废弃的&#xff0c;并推荐使用新的 Java API Client&#xff0c;即 ElasticsearchClient. 为什么要将 RestHighLevelC…...

辅助驾驶功能开发-功能对标篇(15)-NOA领航辅助系统-吉利

1.横向对标参数 厂商吉利车型FX11/EX11/DCY11/G636上市时间2022Q4方案6V5R+1DMS摄像头前视摄像头1*(8M)侧视摄像头/后视摄像头1环视摄像头4DMS摄像头1雷达毫米波雷达54D毫米波雷达/超声波雷达12激光雷达/域控供应商福瑞泰克辅助驾驶软件供应商福瑞泰克高精度地图百度芯片TDA4 T…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...