栈的一些性质:

1.栈为空不可以出栈

2.栈顶元素先出

3.新元素插入栈顶

栈的初始化:

#include<iostream>
#include<string>
using namespace std;
template <class Type>    //模板,表示可以"动态"定义Stack中某些数据元素的类型,这样的话可以增加代码的重用性class Stack{         private:Type *urls;       //定义指向整型的指针,从而动态开辟内存int max_size,top_index;       //max_size表示栈的最大容量,top_index指向栈顶元素public:Stack(int length_input){     //构造函数urls = new Type [length_input];   //动态开辟内存max_size = length_input;          //为max_size赋值,表示栈的最大容量top_index = -1;                  //一开始栈为空,栈顶指针赋值为-1  }~Stack(){delete [] urls;             //析构函数,删除动态开辟的内存}
};
int main() {int n;cin >> n;Stack <string> stack (n);         //声明一个string类的栈,栈的最大容量为nreturn 0;
}

入栈,出栈以及获取栈顶元素:

#include<iostream>
#include<string>
using namespace std;
template <class Type>    //模板,表示可以"动态"定义Stack中某些数据元素的类型,这样的话可以增加代码的重用性class Stack{private:Type *urls;       //定义指向整型的指针,从而动态开辟内存int max_size,top_index;       //max_size表示栈的最大容量,top_index指向栈顶元素public:Stack(int length_input){     //构造函数urls = new Type [length_input];   //动态开辟内存max_size = length_input;          //为max_size赋值,表示栈的最大容量top_index = -1;                  //一开始栈为空,栈顶指针赋值为-1}~Stack(){delete [] urls;             //析构函数,删除动态开辟的内存}bool push(const Type &element){         //为了节省内存,则直接使用引用操作,引用即为变量的别名if(top_index >= max_size-1){        //栈满,入栈失败return false;}++top_index;            //栈顶指针上移urls[top_index] = element;return true;}bool pop(){            if(top_index < 0){    //栈空,出栈失败return false;}--top_index;        //栈顶指针下移return true;}Type top(){assert(top_index >= 0);   //断言操作,不满足括号内条件时,则程序终止return urls[top_index];}
};
int main() {int n, m;cin >> n >> m;Stack<string> stack(n);for(int i = 1;i <= m;i++){        //总共执行m次操作,为了方便,我们这里假设当opr == 0时,执行插入操作;当opr == 1时,执行出栈操作;//当opr == 2时,执行获取栈顶元素操作。int opr;cin >> opr;if(opr==0){string element;cin >> element;if(stack.push(element)){cout << "push success!" << endl;}else{cout << "push failed!" << endl;}}else if(opr == 1){if (stack.pop()) {cout << "pop success!" << endl;} else {cout << "pop failed!" << endl;}}else if (opr == 2) {cout << stack.top() << endl;}}return 0;
}

运行示例:

如有错误,还请指正,O(∩_∩)O谢谢

C++栈的初始化,入栈,出栈,获取栈顶元素等操作相关推荐

  1. 栈的初始化,入栈,出栈,遍历操作(代码实现) [数据结构][Java]

    栈的初始化,入栈,出栈,遍历操作(代码实现) 具体代码如下: package com.ffyc.stack;/*** 创建一个栈结构(使用数组实现)*/ public class ArrayStack ...

  2. 【剑指offer-Java版】22栈的压入弹出序列

    栈的压入弹出序列:给定两个序列,一个是压入顺序,判断另外一个是否是该压入顺序的一个弹出顺序 思路:纯粹的模拟栈的压入和弹出顺序 分别遍历压栈序列seq1和另一个序列seq2 比较当前栈顶元素和seq2 ...

  3. 算法笔记--简单实现栈的先入后出(FILO,First In Last Out)功能

    算法笔记–简单实现栈的先入后出(FILO,First In Last Out)功能 stack 栈,是一个 先入后出(FILO,First In Last Out)的 有序列表,可以形象地理解为手枪的 ...

  4. python 栈的压入弹出序列

    | 栈的压入和弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序, 请判断第二个序列是否为该栈的弹出顺序. 假设压入栈的所有数字均不相等. 例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序 ...

  5. [九度][何海涛] 栈的压入压出

    题目描述: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈 ...

  6. 数据结构与算法--举例分析法- 栈的压入弹出序列

    举例分析 与上两篇问中画图方法一样,我们可以用举例模拟的方法思考分析复杂问题.当一眼不能看出问题的规律的时候,我们可以用几个具体的例子来模拟一下问题的过程.这样就和我们在程序出现问题时候的debug一 ...

  7. 剑指offer-21.栈的压入弹出序列

    1.题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压 ...

  8. C语言查看队头元素,C语言实现循环队列的初始化进队出队读取队头元素判空-1...

    目前,处在学习数据结构+ing,由于之前学过了队列,今天就把自己写过的代码做了一些完善分享给大家,希望能够帮助到有需要的朋友,有不足的地方欢迎大家交流    φ(゜▽゜*)♪ 队列是另一种限定性的线性 ...

  9. c语言while队列不为空,C语言实现循环队列的初始化进队出队读取队头元素判空-2...

    /*顺序表实现队列的一系列操作(设置flag标志不损失数组空间)*/ #include #include #define Queue_Size 50 //队列的最大长度 #define OK 1 #d ...

最新文章

  1. 波士顿动力机器人齐秀舞姿,这是要成团出道?
  2. win2000堆的调试
  3. 【ORACLE 高可用】 作业 :配置ORACLE GoldenGate 1
  4. 二分查找法的实现和应用汇总
  5. SpringBoot 中 @RequestBody的正确使用方法
  6. java inireader_java读取配置文件 Java中如何设置读取ini配置文件?
  7. Oracle18C RPM安装介绍
  8. 记录一下----关于设计模式和面向对象设计原则
  9. Java反射异常处理之InvocationTargetException
  10. 08 域控 架构主机 转移_win2000域控迁移至win2008
  11. 【学习总结匈牙利算法到KM算法】
  12. Python 玩转数据 19 - 数据操作 正则表达式 Regular Expressions 搜索模式匹配
  13. 利用条形码生成器在Word 2013中轻松制作条形码的方法
  14. 特网云服务器 WindowsServer2012 关闭IE增强机制
  15. python 可视化案例_Python之路 08 数据可视化案例
  16. 联邦学习实战-2-用FATE从零实现横向逻辑回归
  17. PAT 1026 Table Tennis (30分)
  18. 【Yoshua Bengio 亲自解答】机器学习 81 个问题及答案 (部分)
  19. java pdf 报表_关于Java向PDF模板写入数据,以及java制作pdf报表的问题
  20. 使用SaveFileDialog将DataTable文件保存成csv文件

热门文章

  1. C语言getopt()函数
  2. telnet连接工具无法连接到地址端口,报错无法打开到主机的连接。 在端口 23: 连接失败
  3. 云计算上安装mysql,redis
  4. 机器学习之——什么是Onehot编码?
  5. Centos 由字符界面 init 3 切换图形界面 init 5
  6. BLOB图像处理技术
  7. Shell中获取字符串长度的七种方法
  8. EmguCV入门(一)
  9. 常见电路结构分析四:plc控制系统与其他控制系统的比较
  10. Cesium 基础知识和文档记录