数据结构之栈实战练习
来源:互联网 发布:unity3d ongui常用函数 编辑:程序博客网 时间:2024/06/03 18:04
定义:栈是限定仅在表头进行插入和删除操作的线性表。要搞清楚这个概念,首先要明白”栈“原来的意思,如此才能把握本质。"栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。
栈是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表下面是栈的一些基本操作练习
package ArrayStack;public class ArrayStack { private int top; private int capacity; private Object[] array; //初始化栈空间大小为1 public ArrayStack(){ capacity=1; array=new Object[capacity]; top=-1; } //自动提升栈大小 private void doubleStack(){ Object [] newArray=new Object[capacity*2]; System.arraycopy(array, 0, newArray, 0, capacity); capacity=capacity*2; array=newArray; } //判断是否为空 public boolean isEmpty(){ return (top==-1); } //判断是否栈满 public boolean isStackFull(){ return (top ==capacity -1); } //入栈 public void push(Object data){ if(isStackFull()){ System.out.println("栈已满,空间自动增大至"+2*capacity); doubleStack(); } array[++top]=data; } //出栈 public Object pop(){ if(isEmpty()){ System.out.println("栈为空"); return null; }else{ return array[top--]; } } //删除栈 public void deleStack(){ top=-1; } //输出 public void diplay(){ for(int i=0;i<=capacity;i++){ System.out.println( pop()); } }}
来简单测试下
public class ArrayStackTest { public static void main(String arg[]){ ArrayStack arrayStack=new ArrayStack(); arrayStack.push(new Integer(1)); arrayStack.push(new Integer(2)); arrayStack.push(new Integer(4)); arrayStack.diplay(); }}
控制台输出:
栈已满,空间自动增大至2
栈已满,空间自动增大至4
1
4
2
栈为空
0
栈为空
0
阅读全文
0 0
- 数据结构之栈实战练习
- 数据结构之栈的练习
- socket编程之实战练习
- 实战练习之--状态模式
- 数据结构之二叉树练习
- 数据结构之队列基础练习
- 数据结构之单链表实践练习
- 数据结构之队列实践练习
- 数据结构之【栈】以及【模板类】基础练习
- JavaScript实战练习之-Tag标签
- 大数据处理例之STL实战练习
- 21天学通C++之--继承实战练习
- 数据结构之二叉树实践练习
- java,Redis实战之常见数据结构操作
- 数据结构实战java实现栈
- 【数据结构&算法】数据结构之单向链表(练习)
- 数据结构练习
- 【栈与队列】SDUT练习2—数据结构实验之栈一:进制转换
- 【吴恩达机器学习笔记学习笔记02】Cost function
- 架构师已死
- Mac安装redis
- 每天一道算法题——替换空格
- 爬虫基础之beautiful soup操作
- 数据结构之栈实战练习
- 有关指针函数不可以返回局部变量的地址的三种解决方法
- 软件工程项目第一部分
- nginx 的默认配置语法
- 用C语言获取时间
- bzoj4198 [Noi2015]荷马史诗
- 架构师的必备素质和成长途径
- Javascript知识点总结(七)
- c3p0和dbcp的区别