当前位置: 首页 > 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 的作用是初始化和销毁栈。


三.栈的特性

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


四.相关链接

        【C++/数据结构】队列的模拟实现-CSDN博客


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

相关文章:

  • Qt 对象树详解:从原理到运用
  • 【软路由】ImmortalWrt 编译指南:从入门到精通
  • 【智能音频新风尚】智能音频眼镜+FPC,打造极致听觉享受!【新立电子】
  • 第2章 windows故障排除(网络安全防御实战--蓝军武器库)
  • 深度学习笔记——线性回归的从0开始实现
  • 配置Spring Boot中的Jackson序列化
  • AWS跨账号服务全解析:安全共享资源的最佳实践
  • Rust~String、str、str、String、Box<str> 或 Box<str>
  • SpringBoot五:JSR303校验
  • Oracle 数据库基础入门(四):分组与联表查询的深度探索(上)
  • 基于SpringBoot的绿城郑州爱心公益网站设计与实现现(源码+SQL脚本+LW+部署讲解等)
  • 创建一个简单的spring boot+vue前后端分离项目
  • 标签使用笔记
  • Unity图集使用事项
  • Flutter 学习之旅 之 flutter 在 Android 端读取相册图片显示
  • RagFlow专题二、RagFlow 核心架构(数据检索、语义搜索与知识融合)
  • 解决各大浏览器中http地址无权限调用麦克风摄像头问题(包括谷歌,Edge,360,火狐)后续会陆续补充
  • 【SpringBoot+Vue】博客项目开发二:用户登录注册模块
  • (十 二)趣学设计模式 之 享元模式!
  • leetcode第77题组合
  • Linux | Ubuntu 与 Windows 双系统安装 / 高频故障 / UEFI 安全引导禁用
  • Docker入门指南:Windows下docker配置镜像源加速下载
  • web前端基础修炼手册
  • 【无标题】Ubuntu22.04编译视觉十四讲slambook2 ch4时fmt库的报错
  • macos下myslq图形化工具之Sequel Ace
  • 【AHK】资源管理器自动化办公实例/自动连点设置
  • 通用查询类接口数据更新的另类实现
  • Linux ls 命令
  • 【问题记录】Go项目Docker中的consul访问主机8080端口被拒绝
  • 面试题:说一下你对DDD的了解?