c++:用顺序表实现简单的栈
main.cpp
#include<iostream>
#include<string>
#include"Stack.hpp"
using namespace std;
void test1(){ //测试
Stack<int> s1;
s1.Push(1);
s1.Push(2);
s1.Push(3);
s1.Push(4);
s1.Pop();
s1.Pop();
s1.Pop();
s1.Pop();
}
int main(){
test1();
return 0;
}
Stack.hpp
#pragma once
template <class T> //使用模板可以实现多种类型栈操作
class Stack{
private:
T* _array; //数据结构
size_t _capacity; //入栈个数
int _topindex; //栈空/满的判断标准
public:
Stack()
:_array(0)
, _capacity(0)
, _topindex(-1)
{}
void Push(const T& x){ //入栈
if (_topindex + 1 == _capacity){ //判断是否需要开辟空间
_capacity = 2 * _capacity + 3;
T* tmp = new T(_capacity);
if (tmp == NULL){
cout << "failed new" << endl;
exit(-1);
}
memcpy(tmp, _array, sizeof(T)*(_topindex + 1)); //内置类型使用
delete _array; // memcpy ,自定义
_array = tmp; //使用for循环逐个拷贝
} //注意深拷贝和前拷贝
_array[++_topindex] = x;
}
void Pop(){ //出栈
if (_topindex > -1){
cout << _array[_topindex] << endl;
_topindex--;
}
}
bool empty(){ //清空栈
return _topindex = -1;
}
};
转载于:https://blog.51cto.com/molova/1705182
c++:用顺序表实现简单的栈相关推荐
- 顺序表实现简单的【扑克牌】
目录 1. 准备一张牌 2. 拿一副牌出来 3.洗牌(打乱牌的顺序) 4.开始发牌 代码gitee链接 20220711/src · 雷晓恒/Java - 码云 - 开源中国 (gitee.com ...
- 用顺序表实现学生信息管理系统
用顺序表实现学生信息管理系统 问题描述: 定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息: (2) 逐个显示学生表中所有学生的相关信息 ...
- 约瑟夫环c语言代码顺序存储,顺序表实现约瑟夫环地问题,C语言.doc
顺序表实现约瑟夫环地问题,C语言 计算机科学与工程学院 PAGE PAGE 2 <算法与数据结构>试验报告 计算机科学与工程学院 <算法与数据结构>试验报告[一] 专业班级 1 ...
- 顺序表实现学生管理系统
定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息: (2) 逐个显示学生表中所有学生的相关信息: (3) 根据姓名进行查找,返回此 ...
- 顺序表讲解和顺序表实现增删查改
前言 顺序表是一种参见的数据结构 特点:类似数组的储存,需要预先开辟空间已备数据插入.(1)同时顺序表也因此会存在和数组同样的问题(例如:越界)(2)同时因为其类似与数组的结构给二分查找这种算法提供了 ...
- 栈——用顺序表实现栈操作
一.线性表特点 线性表:由0个或者多个数据元素组成的有限序列 除了第一个节点(头节点),都有前驱节点 除了最后一个节点(尾节点),都有后继节点 线性表主要由顺序存储结构或者链式存储结构 一般线性表:可 ...
- 顺序表实现栈相关操作
1.栈的相关概念 栈是一种特殊的线性表, 其中只允许在固定的一端进行插入和删除元素.进行数据插入和删除的一端叫做栈顶, 另一端成为栈底. 不含任何元素的栈称为空栈, 栈又称为先进先出的线性表. ...
- 【数据结构】顺序表实现超详解(保姆级教程)
[数据结构] 目录 前言 顺序表 接口实现 各项功能 接口详解 顺序表初始化 顺序表释放 顺序表展示 顺序表容量检查 顺序表数据尾插 顺序表数据头插 顺序表数据前删 顺序表数据尾删 顺序表数据查找 ...
- 用C语言写的一个顺序表实现图书馆书籍管理
Function: 增add_book() 删delete_book() 改modify_book() 查check_book() 实现吧! **************************/ # ...
最新文章
- CENTOS/RHEL 7 系统中设置SYSTEMD SERVICE的ULIMIT资源限制
- 新OpenSUSE的树莓派镜像
- mysql 为游标赋值_mysql 存储过程之游标
- 关于网页的一些小知识点
- [BZOJ2502]清理雪道解题报告|带下界的最小流
- Windows下使用ffmpeg为视频添加字幕
- leetcode 779. K-th Symbol in Grammar | 779. 第K个语法符号(Java)
- SAP Spartacus 3.0 的一些变化
- Python3 爬虫学习笔记 C03 【Ajax 数据爬取】
- Oracle终于安装完成了,开始DBA学习之路
- Active Diretory 全攻略(六)--文件夹权限与共享(2)
- 如果我是推荐算法面试官,我会问哪些问题?
- 一个项目如何编译多个不同签名、包名、资源等,的apk?
- Egret入门学习日记 --- 第十七篇(书中 7.4~8.2节 内容)
- Cookie和Session有什么区别?
- php手册 mac版,PHP中文手册for mac-PHP中文手册Mac版下载 V1.0.2-PC6苹果网
- dirent.h使用详解
- nProtect GameGuard 的破解
- 基于hexo搭建github的个人静态博客
- 华为鸿蒙智慧屏和手机,【荣耀智慧屏评测】鸿蒙初体验:荣耀智慧屏跨系统交互构建新生态(全文)_荣耀 智慧屏_手机评测-中关村在线...
热门文章
- android开机自动运行程序
- len(x) 击败 x.len(),从内置函数看 Python 的设计思想
- 10.1.5 布局优化利器之 Hierarchy Viewer
- AltiumDesigner 热焊盘铺铜
- MYSQL max_user_connections back_log max_connections参数和Max_used_connections
- Struts2 原理
- MPLS *** Trouble Shooting 笔记
- Ubuntu 12.04中文输入法的安装
- javascript刷新页面的集中办法
- Python中通过lambda抛异常的奇技淫巧