Java实现基于数组的顺序栈
来源:互联网 发布:花无涯 网络黑白 编辑:程序博客网 时间:2024/05/29 03:22
栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。后进先出(Last In First Out),简称为LIFO线性表。
栈的基本操作共有六种:
- 构造栈并初始化:Stack();Stack(int initalSize);
- 判断空栈:isEmpty();
- 判断满栈:isFull();
- 入栈操作:push(E e);
- 出栈操作:pop();
- 取栈顶元素但不出栈: peek();
以下是源代码:
package linear;/** *基于数组实现的顺序栈 * @param <E> */public class Stack<E>{ private Object[] data = null; //栈元素数组 private int Maxsize = 0; //栈容量 private int top = -1; //栈顶元素下标 public Stack() { init(20); //默认初始化大小为20的栈 } public Stack(int initalSize) { init(initalSize); } //初始化栈 private void init(int initalSize) { if(initalSize >= 0){ this.Maxsize = initalSize; data = new Object[Maxsize]; top = -1; System.out.println("大小为"+Maxsize+"的栈初始化成功!"); } else{ System.out.println("栈大小不能小于0:"+initalSize); } } //判断栈是否为空 public boolean isEmpty(){ return top == -1 ? true : false; } //判断栈是否满 public boolean isFull(){ return top >= Maxsize-1 ? true : false; } //压栈操作 public boolean push(E e){ if( isFull() ){ System.out.println("栈已满,操作失败"); return false; } else{ top++; data[top] = e; System.out.println("元素‘"+e+"’入栈"); return true; } } //出栈操作 @SuppressWarnings("unchecked") public E pop(){ if( isEmpty() ){ System.out.println("空栈!操作失败"); return null; } else{ E e = (E)data[top]; data[top] = null; //元素出栈后数组该位置置空 top--; return e; } } //取栈顶元素但不出栈 @SuppressWarnings("unchecked") public E peek(){ if( isEmpty() ){ System.out.println("栈为空!操作失败"); return null; } else{ return (E)data[top]; } } public static void main(String[] args) { Stack<String> s = new Stack<String>(); s.push("鬼迷心窍"); s.push("爱的代价"); s.push("给自己的歌"); while(!s.isEmpty()) { String str = s.pop(); System.out.println(str); } }}
测试结果:
阅读全文
1 0
- Java实现基于数组的顺序栈
- 实现基于静态数组的顺序表
- java 基于数组的栈的实现
- 实现基于静态数组的顺序表的基本操作
- 基于数组的顺序线性表的实现
- 基于数组实现顺序存储的线性表
- Java用数组实现顺序栈
- Java数组实现顺序栈与队列
- 基于数组的栈实现
- java 基于数组实现的队列
- Java 数组实现顺序队列
- 顺序栈-数组实现
- Java中栈的实现(1)-使用顺序存储结构(数组)以及实现
- 数组的顺序表实现
- (四)基于数组的栈的实现
- 实现基于静态数组的顺序表的以下基本操作:
- Java实现——判断数组出栈顺序
- 简单栈的实现(基于数组)
- java怎么把项目导成jar包步骤图
- css基础样式
- IntelliJ Idea 常用快捷键列表
- 案例:使用正则表达式的爬虫
- Android抽象布局——include、merge 、ViewStub
- Java实现基于数组的顺序栈
- ssl(https)部署指南
- centos 部署gitblit
- 使用gotoxy()函数移动控制台光标
- 微信小程序怎么用,在微信那里打开
- MYSQL性能优化的最佳20+条经验
- 浅谈IT项目成熟度的评估
- matlab 之 diag 函数用法
- margin和padding的区别?