数据结构2—Java_栈_顺序存储
来源:互联网 发布:淘宝网药店购药 编辑:程序博客网 时间:2024/06/10 14:28
一、定义接口
package Statck;public interface IStatck<T> { /** * 压栈 * @param t */ public void push(T t); /** * 弹栈 */ public T Pop(); /** * 返回元素个数 * @return */ public int StackLength(); /** * 清空栈 */ public void ClearStack();}
二、自定义类
package Statck;public class MStack<T> implements IStatck<T> { private int top=-1; Object[] objArray ; int MAX; /** * 构造函数,初始化数组大小 * @param n */ MStack(int n){ MAX=n; objArray = new Object[MAX]; } /** * 压栈 */ @Override public void push(T t) { if(top>=MAX-1){//top==Max-1时满栈 throw new RuntimeException("超出栈上线"); }else{ top++; objArray[top]=t; } } /** * 弹栈 */ @Override public T Pop() { if(top==-1){ throw new RuntimeException("空栈,无法弹出元素"); }else{ T t =(T)objArray[top]; top--; return t; } } /** * 长度 */ @Override public int StackLength() { return top+1; } @Override public void ClearStack() { if(top>-1){ for(int i=0;i<top;i++){ objArray[i]=null; } } } }
三、测试代码
package Statck;import java.util.Random;public class TestStack { MStack<Integer> stack ; final int MAXVALUE=15; Random r = new Random(); public static void main(String[] args){ TestStack ts = new TestStack(); ts.initStack(10); ts.pushData(); } /** * 初始化, * @param length 栈长度 */ private void initStack(int length){ stack = new MStack<Integer>(length); } /** * 压栈——弹栈——显示 */ private void pushData(){ int length = Math.abs(r.nextInt(MAXVALUE));//Math.abs()取绝对值 try{ System.out.println("压入元素:"); for(int i=0;i<length;i++){ int j = Math.abs(r.nextInt(MAXVALUE)); System.out.print(" "+j); stack.push(j); } }catch(Exception e){System.out.println(e.toString());} showStackData(stack); } /** * 显示 * @param stack */ private void showStackData(MStack<Integer> stack){ System.out.println(""); System.out.println("栈长:"+stack.StackLength()); System.out.println("栈内元素为(出栈顺序):"); int length = stack.StackLength(); for(int i=0;i<length;i++){ System.out.print(" "+stack.Pop()); } }}
四、测试结果
压入元素:
13 10 3 3 9 7 3 12 4 10 10java.lang.RuntimeException: 超出栈上线
栈长:10
栈内元素为(出栈顺序):
10 4 12 3 7 9 3 3 10 13
top来指示栈顶元素在数组中的位置,top初始值为-1,表示栈为空,top=0表示已经有一个元素
(top==MAXSIZE-1)为栈满标志
0 0
- 数据结构2—Java_栈_顺序存储
- 数据结构_线性表_顺序存储之1顺序栈2共享栈_链式存储之链栈_栈的应用举例
- java_数据结构_链表
- 数据结构_顺序栈
- 数据结构---栈---顺序存储
- Java_基础_初始化顺序
- 数据结构——栈的顺序存储
- 数据结构——栈之顺序存储
- 数据结构_线性表_顺序/链式存储优缺点比较
- 数据结构之共享栈(顺序存储)—改编《大话数据结构》
- 数据结构:栈的顺序存储
- 数据结构-栈的顺序存储
- 数据结构-栈的顺序存储
- 数据结构_6:树:C语言_顺序存储
- 数据结构_队列_顺序存储结构队列/链式存储结构队列
- 数据结构的C实现_顺序栈
- 数据结构_顺序栈相关操作
- 数据结构_顺序表
- MVC HtmlHelper用法大全
- Android应用开发经典面试题
- @Repository、@Service、@Controller 和 @Component
- eclipse android使用Maven deploy构建到Nexus上
- linux常见服务解释
- 数据结构2—Java_栈_顺序存储
- 安全卫士第五天
- Activity显示空白界面解决方法
- MS SQL执行大脚本文件时,提示“内存不足”的解决办法
- 处理ora-01578 ora-01110错误
- php经典算法
- class加载的步骤
- webrtc进阶-信令篇-之三:信令、stun、turn、ice
- redis set zset 的具体操作