stack(栈)!基于顺序表实现
来源:互联网 发布:男士围巾 知乎 编辑:程序博客网 时间:2024/06/05 20:50
这个星期学到了栈。
老师一开始就给我们明确一个概念,我们有堆,有栈,但是没有堆栈!!!
O(∩_∩)O我们先明确一下stack的概念吧。
栈(stack)是限定仅在一端进行插入或删除操作的线性表。成为“LIFO”线性表,意思是“后进先出”,(last in first out)
术语:
top(栈顶元素)--可访问元素
push(入栈)---元素插入
pop(出栈)--元素删除
----(参考shaffer数据结构与算法分析教材)
我们可以分析得出,其实stack就是一种特殊化的线性表,它只能在一端进行插入或删除。
顺序表有两个设定top的方法
1、
1 2 3 4 5 top在1可以实现嘛?
可以!
分析:
插入:复杂度为O(n)
删除:复杂度为O(1)
2、
1 2 3 4 5 top在5可以实现吗?
可以!
分析:
插入:复杂度为O(1)
删除:复杂度为O(1)
我想,谁更优已经很明显了。
top的设定也有两个方法:
1、指向第一个可以利用的位置
2、指向最后一个存放的数据的位置
这两个实现起来有点差别,自己注意下就好了
贴上我的简单实现代码:
头文件stack.h:
include<iostream> using namespace std;template<typename E>class stack{private:E *arr;int size;int top=0;public:stack(int s){size=s;arr=new E[s];top=0;}~stack(){delete arr;}bool push(E it){if(top==size){cout<<"满了"<<endl;return false;}else{arr[top]=it;top++;return true;} } bool pop(){if(top==0){cout<<"empty"<<endl;return false;}else{cout<<"删除了:"<<arr[top-1]<<endl;top--;return true;}}void clear(){top=0;}};
main.cpp
#include"stack.h"int main(){stack<int>sta(3);sta.push(1);sta.push(2);sta.push(3);sta.pop();sta.push(4);}
值得一提的是,我们的clear()只需要把top=0就好了,大家可以想一想为啥
阅读全文
0 0
- stack(栈)!基于顺序表实现
- 基于Vector实现C++中的适配器stack(顺序栈)
- 基于Vector实现适配器stack(顺序栈)
- 封装顺序栈(模拟实现stack)
- 封装顺序栈(模拟实现stack)
- Stack(1)Stack的顺序实现
- 顺序栈(Stack)
- Structure.Stack 栈(包含顺序栈、链表栈的实现)
- 基于链表实现Java 自定义Stack栈
- 顺序栈(sequence stack)
- 【数据结构】顺序栈 Stack
- 顺序栈(Sequential Stack)
- 顺序线性表 代码实现(基于java)
- 基于数组实现Java 自定义Stack栈类及应用
- 栈(Stack)的实现
- Java 实现栈(Stack)
- Java实现基于数组的顺序栈
- 基于顺序表实现线性表
- buildscript中的repositories和allprojects的repositories的作用和区别是什么呢?
- Centos7安装MariaDB
- 约瑟夫环问题
- 文章标题
- c# enum 枚举
- stack(栈)!基于顺序表实现
- 常用pomelo命令行
- 还是找程序员做老公,最靠谱!
- 用户看到的前端 VS. 程序员看到的后端
- 聊聊面向对象编程的几个基本原则
- .Net处理json数据常见的几种方法
- Tomcat异常之The Apache Tomcat installation at this directory is version 8.5.6A Tomcat 8.0 installation
- 奇葩属性:layout_weight 的解释及使用
- 程序员新公司入职被拒 只因离职证明多了一句话!