C++数据结构之栈——顺序栈的实现
来源:互联网 发布:tensorflow whl 编辑:程序博客网 时间:2024/06/05 08:16
停更说明:国庆陪女朋友旅游去了,并且发生了许多许多有趣的事情,有空再分享哈
这里该来一条华丽丽的分割线
现在来说说数据结构中的栈,英文中好像是Stack,翻译过来栈其实是很形象的(栈的出口和入口相同,且只有一个进出口),我们平时通过变量声明(非NEW方法)申请来的存储变量的方法其实就是栈内存。
特点:
- 入栈元素先进先出
- 属于操作受限的线性表
- 仅有一个栈顶指针
- babal…
下面是顺序栈的实现
存储:一个指定大小的数组,感觉向量也是可以(视应用环境)
栈顶指针依据:数组下标
操作:出栈、入栈、查看栈顶元素
类内部有用的函数:栈的判空判满
模板:
#pragma once#include<iostream>using namespace std;const int MaxSize = 100;template<typename T>class Stack {public: Stack(); ~Stack(); bool Empty(); //判空 bool Full(); //判满 bool EnStack(T x); //入栈 bool pop(); //出栈 bool GetTop(T &element); //获取栈顶元素private: T data[MaxSize]; int top;};template<typename T>Stack<T>::Stack() { //构造函数 top = -1;}template<typename T>Stack<T>::~Stack() { //析构函数}template<typename T>bool Stack<T>::Empty() { //判空 return top == -1 ? true : false;}template<typename T>bool Stack<T>::Full() { //判满 return top == MaxSize - 1 ? true : false;}template<typename T>bool Stack<T>::EnStack(T x) { //进栈 if (Full()) { return false; } top++; data[top] = x; return true;}template<typename T>bool Stack<T>::pop() { //出栈 if (Empty()) { return false; } top--; return true;}template<typename T>bool Stack<T>::GetTop(T &element) { //查看栈顶元素 if (!Empty()) { element = data[top]; return true; } return false;}
小例子测试
#include<iostream>#include"Stack.h"using namespace std;int main() { Stack<int> *p = new Stack<int>; //申请一个栈 p->EnStack(1); //判空 int element; if (p->GetTop(element)) { //查看栈顶元素 cout << element << endl; } p->EnStack(2); //进栈 if (p->GetTop(element)) { cout << element << endl; } p->pop(); //出栈 if (p->GetTop(element)) { cout << element << endl; } cout << p->Full()<<endl; cout<<p->Empty(); return 0;}
结果:
缺点:缺少了代码的健壮性(其实可以装逼的说鲁棒性233)
总结:很像一个减肥版的顺序表(减少了很多方法),在实际应用的时候应该注意合不合适,数组的MaxSize应该取什么值
阅读全文
0 0
- 数据结构C语言实现之顺序栈
- 数据结构 学习笔记之:顺序栈的C语言实现
- 数据结构之---c语言实现栈的顺序存储
- C++数据结构之栈——顺序栈的实现
- 数据结构的C实现_顺序栈
- <数据结构>顺序栈的C语言实现
- 【数据结构】顺序栈的实现(c++)
- 数据结构(严蔚敏)之三——顺序栈之c语言实现
- 数据结构—栈的顺序的实现
- 简单数据结构的实现之顺序栈
- 数据结构之栈的顺序表实现
- [C++] 数据结构之顺序栈
- 数据结构——顺序栈(C语言实现)
- 数据结构之顺序栈实现
- c数据结构之顺序栈(数组实现1)
- C数据结构之顺序栈(数组实现2)
- 数据结构之栈的push与pop操作(顺序存储结构的c实现)
- 数据结构:栈的顺序结构及实现(C++)
- DOS批处理高级教程 第四章 批处理中的变量
- MyBatis入门
- PTA-列出连通集(DFS+BFS)
- 二叉树
- 代码片段学习(一)
- C++数据结构之栈——顺序栈的实现
- 基于Qt的海康威视网络摄像头SDK的二次开发(一)
- mysql中datatime格式转化,后台为node
- echarts 动态获取数据demo
- FragmentPagerAdapter和FragmentStatePagerAdapter的区别
- 插入排序之希尔排序
- DOS批处理高级教程 第五章 set命令详解
- 在docker下查看对应的微服务日志
- POJ