#include <iostream> using namespace std; template <typename T>
class Stack{
private:
int size;
int capacity;
int top_loci;
T *data; public:
~Stack();
Stack(int size = 100);
void pop();
void push(const T value);
int get_stack_size();
void clear();
bool empty();
bool full();
void expand_size();
T top();
}; template<typename T>
Stack<T>::Stack(int size){
top_loci = -1;
size = 0;
capacity = size;
data = new T[size];
} template<typename T>
Stack<T>::~Stack(){
if(data){
delete [] data;
} data = nullptr;
capacity = 0;
size = 0;
top_loci = -1;
} template<typename T>
void Stack<T>::push(const T value){
if(full()){
expand_size();
} size++;
data[++top_loci] = value;
} template<typename T>
void Stack<T>::pop(){
if(empty()){
std::cerr<<"empty stack"<<endl;
} size--;
top_loci--;
} template<typename T>
T Stack<T>::top(){
if(empty()){
return 0;
} return data[top_loci];
} template<typename T>
int Stack<T>::get_stack_size(){
return size;
} template<typename T>
bool Stack<T>::empty(){
return top_loci==-1;
} template<typename T>
void Stack<T>::clear(){
size = 0;
top_loci = -1;
} template<typename T>
bool Stack<T>::full(){
return capacity==size;
} template<typename T>
void Stack<T>::expand_size(){
T *p = new T[2*capacity];
for(int i=0;i<capacity;i++)
p[i] = data[i]; capacity = 2*capacity;
delete data;
data = p;
} void print_stack(Stack<int> s){
while(!s.empty()){
cout<<s.top()<<" ";
s.pop();
}
cout<<endl;
} int main(int argc, char const *argv[]){
Stack<int> s(100);
s.push(1);
s.push(2);
s.push(3);
s.push(4);
cout<<s.top()<<endl;
print_stack(s);
s.pop();
s.push(8);
cout<<s.top()<<endl;
return 0;
}

stack-c++的更多相关文章

  1. 线性数据结构之栈——Stack

    Linear data structures linear structures can be thought of as having two ends, whose items are order ...

  2. Java 堆内存与栈内存异同(Java Heap Memory vs Stack Memory Difference)

    --reference Java Heap Memory vs Stack Memory Difference 在数据结构中,堆和栈可以说是两种最基础的数据结构,而Java中的栈内存空间和堆内存空间有 ...

  3. [数据结构]——链表(list)、队列(queue)和栈(stack)

    在前面几篇博文中曾经提到链表(list).队列(queue)和(stack),为了更加系统化,这里统一介绍着三种数据结构及相应实现. 1)链表 首先回想一下基本的数据类型,当需要存储多个相同类型的数据 ...

  4. Stack Overflow 排错翻译 - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder

    Stack Overflow 排错翻译  - Closing AlertDialog.Builder in Android -Android环境中关闭AlertDialog.Builder 转自:ht ...

  5. Uncaught RangeError: Maximum call stack size exceeded 调试日记

    异常处理汇总-前端系列 http://www.cnblogs.com/dunitian/p/4523015.html 开发道路上不是解决问题最重要,而是解决问题的过程,这个过程我们称之为~~~调试 记 ...

  6. Stack操作,栈的操作。

    栈是先进后出,后进先出的操作. 有点类似浏览器返回上一页的操作, public class Stack<E>extends Vector<E> 是vector的子类. 常用方法 ...

  7. [LeetCode] Implement Stack using Queues 用队列来实现栈

    Implement the following operations of a stack using queues. push(x) -- Push element x onto stack. po ...

  8. [LeetCode] Min Stack 最小栈

    Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ...

  9. Stack的三种含义

    作者: 阮一峰 日期: 2013年11月29日 学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈". 理解这个概念,对于理解程序的运行至关重要.容易混淆的是,这个词 ...

  10. Uncaught RangeError: Maximum call stack size exceeded 超出最大调用值(个人解释)

    写了段jq后,报这个错,度娘未解,灵光一闪,找到原因,上代码: Html 结构: <a href="javascript:;" class="item-pic&qu ...

随机推荐

  1. opencv库图像基础2-python

    opencv库图像基础2-python 图像的简单变换 先导入库 import cv2 import matplotlib.pyplot as plt import numpy as np 1.图像的 ...

  2. 压测中TPS上不去的几种原因及分析?

    1. 服务器资源限制:服务器的硬件资源(如 CPU.内存.磁盘)可能不足以处理大量的请求.在高负载情况下,服务器可能无法及时响应所有的请求,导致 TPS 上不去.解决方法可以考虑升级硬件资源或通过负载 ...

  3. Java 如何自定义异常类

    1 package com.bytezero.throwable; 2 3 /** 4 * 5 * @Description 如何自定义异常类 6 * @author Bytezero·zhengle ...

  4. C++ //案列-员工分组 ( 容器存放,查找,打印,统计,宏定义 ,随机)

    //案列-员工分组//描述:公司招聘10个员工(ABCDEFGHIJ),10名指派员工进入公司,需要指派那个员工在那个部门工作//员工信息有:姓名 工资组成: 部门分为:策划 美术 研发//随机给10 ...

  5. 3DCAD图纸转2D(DXF)图纸通用解决方案文稿

    本文地址:https://gitee.com/dvaloveu/lovedva/issues/I6B5YC 视频演示(1.25倍速&原速):Acfun Bilibili 脚本地址:https: ...

  6. 重新认识 tag 快照 git (项目临时添加需求,之前有分支合并,导致从节点拉分支不行了,因为没有tag快照)

    之前的tag认知 之前一直以为tag就是在git的提交commit上打一个标,然后可以拉出分支.之前没太重视. 因为我觉得 可以直接从某个commit直接拉出分支,这打不打tag无所谓 翻车现场 今天 ...

  7. Python | Flask 解决跨域问题

    Python | Flask 解决跨域问题 系列文章目录 目录 系列文章目录 前言 使用步骤 1. 引入库 2. 配置 1. 使用 CORS函数 配置全局路由 2. 使用 @cross_origin ...

  8. Web service是什么? (转载)

    转载自 : Web service是什么?- 阮一峰的网络日志 作者: 阮一峰 日期: 2009年8月26日 我认为,下一代互联网软件将建立在Web service(也就是"云") ...

  9. sourceTree Mac 跳过注册 安装

    打开sourcetree 关闭sourcetree 命令终端输入defaults write com.torusknot.SourceTreeNotMAS completedWelcomeWizard ...

  10. [LeetCode] 2045. 到达目的地的第二短时间

    一.摘要 本文介绍了一种使用BFS求无向图中第二短的距离的算法,本文算法参考自Python3 BFS找出第二短路径.通过使用BFS求出题目中给出的路径图(无向联通图)从节点1到节点n的第二短的路径,再 ...