数据结构<十>: 线程结构 栈的两种实现
来源:互联网 发布:阿里云 招聘 安全 编辑:程序博客网 时间:2024/05/19 19:15
提供一个接口
package com.mo.stack;/** * 这是栈的接口,抽象数据类型 */public interface Stack {/** *入栈 */void push(Object obj) throws Exception;/** * 出栈 */Object pop() throws Exception;/** *取出栈的元素 */Object getTop() throws Exception;/** *栈是不是为空 */boolean isEmpty();}
用数组实现的栈
package com.mo.stack;public class SeqStack implements Stack {private final static int defaultSize = 10;//默认创建的数组大小private int top;//栈顶的元素的下标private Object[] stack;//栈数组private int maxStackSize;//数组的容量public SeqStack() {init(defaultSize);}public SeqStack(int size) {init(size);}private void init(int size) {stack = new Object[size];top = 0;maxStackSize = size;}public void push(Object obj) throws Exception {if(top == maxStackSize) throw new Exception();stack[top] = obj;top++;}public Object pop() throws Exception {if(top == 0) throw new Exception();Object obj = stack[top - 1];top--;return obj;}public Object getTop() throws Exception {if(top < 0) throw new Exception();return stack[top - 1];}public boolean isEmpty() {return top == 0;}public static void main(String[] args) throws Exception {SeqStack seqStack = new SeqStack();for(int i = 0; i < 10; i++) {seqStack.push(i);}while(!seqStack.isEmpty()) {System.out.print(seqStack.pop());}}}
用链表实现的栈
package com.mo.stack;import com.mo.linList.Node;//链表实现的堆栈public class LinStack implements Stack{private Node head;//栈顶private int size;//栈中的元素个数public LinStack() {head = null;size = 0;}public void push(Object obj) throws Exception {Node node = new Node(obj,head);//把首节点放在新增的obj后面head = node;//设为当前节点size++;}public Object pop() throws Exception {if(size == 0) throw new Exception();Object oldHead = head.getData();//获取首节点的元素数据head = (Node)head.getNext();//把链表的下一个Node设为当前节点size--;return oldHead;}public Object getTop() throws Exception {if(size == 0) throw new Exception();return head.getData();}public boolean isEmpty() {return size == 0;}public static void main(String[] args) throws Exception {LinStack linStack = new LinStack();for(int i = 0; i < 10; i++) {linStack.push(i+1);}while(!linStack.isEmpty()) {System.out.print(linStack.pop());}}}
阅读全文
0 0
- 数据结构<十>: 线程结构 栈的两种实现
- 数据结构<十一>: 线程结构 队列的两种实现
- 线程-实现线程的两种方式
- 数据结构学习之栈的两种实现方式
- 实现树状结构的两种方法
- 实现树状结构的两种方法
- 实现一个线程的两种方法
- 实现线程的两种方式
- 实现线程的两种方式
- 两种实现线程的方法
- 线程的两种不同实现方式
- 实现线程的两种方法
- 线程的两种实现方式
- 实现线程的两种方式
- 线程的两种实现形式
- java实现线程的两种方式
- Java实现线程的两种方式
- 实现线程的两种方式
- linux 环境配置虚拟主机
- 程序猿必定会爱上的十款软件
- Spring Cloud分布式微服务云架构源码结构
- 关于wpf的date binding的绑定失败错误信息输出格式
- Java【集合系列】-02-Collection架构
- 数据结构<十>: 线程结构 栈的两种实现
- 新闻奖颁给了一个写稿机器人(来自新华社)
- PHP版:地图对接汇总
- 苹果最新机器学习论文:使用VoxelNet进行3D物体检测
- Spring 依赖注入方式详解
- 联想高校AI精英挑战赛移师冰城,哈工大上演人工智能创业大秀
- 百度系无人车创业公司领骏科技完成新一轮融资
- Erlang shell快捷键
- 商汤自曝近况:明年或IPO、无人车大单、不寻常的美研、C轮将完