C语言动态实现顺序栈

news/2024/12/5 5:05:44/
#include <bits/stdc++.h>
using namespace std;
#define ElemType int
#define MAXSIZE 200
#define OK 1
/* 可以定义一个 overflow是溢出,为-1 */
typedef struct         //定义栈的结构体
{ElemType* base;ElemType* top;int stacksize;
}SqStack;void Init(SqStack* s)   //初始化函数
{s->base = (ElemType*)malloc(MAXSIZE * sizeof(ElemType));memset(s->base, 0, MAXSIZE * sizeof(ElemType));if (!s->base)  /**若栈底为空,则栈溢出*/exit(-1);  /**停止程序*/s->top = s->base;s->stacksize = MAXSIZE;
}void Destroy(SqStack* s)  //销毁栈
{free(s->base);s->stacksize = 0;s->base = NULL;s->top = NULL;
}void Clear(SqStack* s)   //清空栈
{s->top = s->base;
}bool Empty(SqStack *s) //判断是否为空
{return s->top == s->base;
}ElemType Top(SqStack *s)  //返回栈顶元素
{return *(s->top - 1);
}
bool Push(SqStack* s, ElemType e)
{if (s->top - s->base + 1 > s->stacksize){s->base = (ElemType*)realloc(s->base, (MAXSIZE + 1) * sizeof(ElemType));s->stacksize += 1;cout << "增加一个" << endl;}if (!s->base)exit(-1);*(s->top) = e;s->top++;return OK;
}bool Pop(SqStack* s)
{if (Empty(s)){cout << "删除错误" << endl;exit(-1);}s->top--;return OK;
}int main()
{SqStack S1;Init(&S1);Push(&S1, 1);Push(&S1, 2);Push(&S1, 3);Push(&S1, 4);Push(&S1, 5);Push(&S1, 6);SqStack S2;Init(&S2);Push(&S2, 1);Push(&S2, 2);Push(&S2, 3);Push(&S2, 4);Push(&S2, 5);Push(&S2, 6);while (!Empty(&S2)){cout << Top(&S2) << " ";Pop(&S2);}Destroy(&S1);Destroy(&S2);return 0;
}


http://www.ppmy.cn/news/1123014.html

相关文章

聊聊jedis连接池参数配置

序 本文主要研究一下jedis连接池的参数配置 JedisConfig redis/clients/jedis/JedisPoolConfig.java public class JedisPoolConfig extends GenericObjectPoolConfig<Jedis> {public JedisPoolConfig() {// defaults to make your life with connection pool easier…

基于SSM的乡镇篮球队管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

《机器人SLAM导航 核心技术与实战》

PDF及书中代码&#xff1a;https://github.com/xiihoo/Books_Robot_SLAM_Navigation 课件下载&#xff1a;xiihoo - 机器人开发者社区 视频课程&#xff1a;《机器人SLAM导航核心技术与实战》书籍配套教学视频_哔哩哔哩_bilibili

rust学习-rpc

使用框架rpcx-rs rpcx-rs 0.2.2 版本,使用Rust访问rpcx服务,支持 JSON 和 MessagePack 两种序列化方式。 protobuf序列化的支持、服务治理各种功能(路由、失败处理、重试、熔断器、限流)、监控(metrics、trace)、注册中心(etcd、consul)等众多的功能 cat ../Cargo.toml [pa…

二十五、MySQL事务的四大特性和常见的并发事务问题

1、事务的四大特性 2、常见的并发事务问题 &#xff08;1&#xff09;并发事务问题分类&#xff1a; &#xff08;2&#xff09;脏读&#xff1a; 一个事务正在对一条记录做修改&#xff0c;在这个事务完成并提交前&#xff0c;这条记录的数据就处于不一致的状态&#xff1b;…

(第三百篇BLOG记录)写于博士毕业与入职之初-20230924

启 由于若干原因&#xff08;包括但不限于紧锣密鼓的完成博士毕业的一系列实验和论文撰写、学习各种百花齐放的有意思的领域、完成人生身份的重大转变&#xff09;&#xff0c;导致卡在299篇博客已经很久了&#xff0c;不过算了一下还是在一个较长时间维度上可以基本保持每周一…

博客摘录「 redis---分布式锁存在的问题及解决方案(Redisson)」2023年9月24日

N&#xff1a;Network Delay&#xff0c;网络延迟 在分布式系统中&#xff0c;网络延迟是一个普遍存在的问题。当多个节点之间需要进行通信时&#xff0c;网络延迟可能导致消息传递的延迟和响应时间增加。对于分布式锁而言&#xff0c;在获取锁或释放锁时&#xff0c;需要进行网…

Kafka 笔记 (Non-Root/Container)

目录 1. Kafka 笔记 (Non-Root/Container)1.1. 启动1.2. bitnami/kafka1.2.1. Non-Root Containers 1. Kafka 笔记 (Non-Root/Container) 1.1. 启动 Kafka 需要与 ZooKeeper 一起启动: Kafka with ZooKeeper Run the following commands in order to start all services in…