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

【C++/数据结构】栈的模拟实现

零.导言

        栈是一种数据结构,在后续的学习中可能经常使用,因此我们今天就来学习如何实现栈,以更好地使用它。


一.栈的模拟实现

        栈的形式如下:

#include<iostream>
#include<cassert>using namespace std;typedef int StackDataType;class Stack
{
public:Stack(int capacity = 4){_arr = (StackDataType*)malloc(4 * sizeof(StackDataType));_capacity = capacity;_top = 0;}~Stack(){free(_arr);_capacity = _top = 0;}void Push(StackDataType n){if (_capacity == _top){int newcapacity = 2 * _capacity;StackDataType* tmp = (StackDataType*)realloc(_arr, newcapacity * sizeof(StackDataType));if (tmp == 0){perror("reralloc fail!");exit(1);}_arr = tmp;_capacity = newcapacity;}_arr[_top++] = n;}bool isEmpty(){return _top == 0;}void Pop(){assert(!isEmpty());_top--;}StackDataType Top(){assert(!isEmpty());return _arr[_top - 1];}private:StackDataType* _arr;int _capacity;int _top;
};

二.栈的相关解释

         在类(class)Stack 中,包含成员变量和成员函数;其中,_arr,_capacity,_top,都是私有的,不能在类外直接使用。而其成员函数,如Stack,~Stack,Push,Pop等等是公有的,可以在类外使用。

        Push的作用是在栈顶插入一个数据,Pop的作用是删除栈顶的一个数据,Top的作用是去除且不删除栈顶的数据。

        Stack~Stack 的作用是初始化和销毁栈。


三.栈的特性

        栈的特性是先进后出,即先存进的类容要等后存进的类容取出后才能取出。运用这个特性,我们可以便捷的解决很多问题。


四.相关链接

        无


http://www.lryc.cn/news/543824.html

相关文章:

  • StarRocks 开发环境搭建踩坑指北之存算分离篇
  • C++ Qt常见面试题(2):QT中的文件流(QTextStream)和数据流(QDataStream)的区别
  • Linux驱动学习(三)--字符设备架构与注册
  • 软件工程应试复习(考试折磨版)
  • 【JAVAEE】多线程
  • 5.10 P-Tuning v2:多层级提示编码的微调革新
  • LLM中的Benchmark是什么
  • PMP项目管理—整合管理篇—6.实施整体变更控制
  • 深度学习之特征提取
  • Gurobi 并行计算的一些问题
  • 堆、栈、最小堆
  • 基于 Spring AI 的 HIS 系统智能化改造
  • React进阶之前端业务Hooks库(五)
  • 常见锁类型介绍
  • Java中,Scanner和System.out超时的解决方法及原理
  • 一种数据高效具身操作的原子技能库构建方法
  • 云创智城YunCharge 新能源二轮、四轮充电解决方案(云快充、万马爱充、中电联、OCPP1.6J等多个私有单车、汽车充电协议)之新能源充电行业系统说明书
  • JVM垃圾回收器深度底层原理分析与知识体系构建
  • 30.[前端开发-JavaScript基础]Day07-数组Array-高阶函数-日期Date-DOM
  • IP、网关、子网掩码、DNS 之间的关系详解
  • 【Day50 LeetCode】图论问题 Ⅷ
  • 结构体介绍及内存大小分配问题
  • halcon 条形码、二维码识别、opencv识别
  • Vue框架的使用 搭建打包 Vue的安全问题(Xss,源码泄露)
  • Java+SpringBoot+Vue+数据可视化的音乐推荐与可视化平台(程序+论文+讲解+安装+调试+售后)
  • day2 - SpringBoot框架开发技术
  • Flash-03
  • 新建菜单项的创建之CmpGetValueListFromCache函数分析
  • 【Word2Vec】Skip-gram 的直观理解(深入浅出)
  • 在MacOS上打造本地部署的大模型知识库(一)