栈的定义以及不同的存储结构的AVA实现
来源:互联网 发布:vb时间触发事件 编辑:程序博客网 时间:2024/05/22 00:50
栈的定义:栈是限定插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶(top),另一端叫做栈底。对栈的基本操作有push(进栈)和pop(出栈),前者相当于插入,后者相当于删除最后进栈的元素。
栈中的元素除了具有线性关系外,还具有先进后出的特性。
package data.Stack;import java.util.Stack;public interface MyStack<T> {/** * 判断栈是否为空 */ boolean isEmpty(); /** * 清空栈 */ void clear(); /** * 栈的长度 */ int length(); /** * 数据入栈 */ void push(T data); /** * 数据出栈 */ T pop();}
一、栈的顺序存储结构及实现
栈的顺序存储结构成为顺序栈。顺序栈本质上是顺序表的简化,唯一需要确定的是用数组的哪一端表示栈底。通常把数组中下标为0的一端作为栈底,同时附设指针top指示栈顶元素在数组中的位置。
package data.Stack;public class MyArrayStack<T> implements MyStack{ private Object []object=new Object[16]; private int size=0;public void clear() {for(int i=0;i<size;i++){object[i]=null;} size=0;}public boolean isEmpty() {return size==0;}public int length() {return size;}public T pop() {if(size==0){return null;}T temp=(T) object[size-1];object[--size]=null;return temp;}public void push(Object data) {// TODO Auto-generated method stubif(size==object.length){resize();}object[size++]=data;}/** * 数组扩容 */public void resize(){Object [] temp=new Object[object.length*3/2+1];for(int i=0;i<size;i++){temp[i]=object[i];object[i]=null;}object=temp;}}
栈的链接存储结构及实现
1.链接的链接存储结构——链栈
通常链栈有单链表示,因此其结点结构与单链表的结点构造相同。因为只能在栈顶执行插入和删除操作,显然以单链表的头部做栈顶是最方便的,而且没有必要像单链表那样为了运算方便附加一个头结点。
package data.Stack;public class MyLinkedStack<T> implements MyStack {/** * 将数据封装成结点 * @author zhouhai * */ private final class Node{private Node pre;private T data; } /** * 栈顶指针 */ private Node top; private int size;//栈的长度 /** * 无参构造函数 */ public MyLinkedStack(){ top=null; size=0; }public void clear() {top=null;size=0;}public boolean isEmpty() {return size==0;}public int length() {return size;}public Object pop() { if(size==0){ return null; } Node temp=top; top=top.pre; size--; return temp;}public void push(Object data) { Node node=new Node(); node.data=(T) data; node.pre=top; top=node; size++;}}
- 栈的定义以及不同的存储结构的AVA实现
- 栈的顺序存储结构以及实现
- 栈的链式存储结构以及实现
- 栈的定义和存储以及算法实现
- 队列的不同存储结构及JAVA实现
- Myisam和Innodb索引实现的不同(存储结构)
- 数据结构——队列的链式存储结构以及实现
- 数的定义及存储结构
- 图的定义和存储结构
- 存储结构的定义及其分类
- 栈的顺序存储结构的实现
- 栈的链式存储结构的实现
- Java中栈的实现(1)-使用顺序存储结构(数组)以及实现
- ava中定时JOB的实现方式
- AVA多线程实现的三种方式
- 队列的定义以及实现
- 结构体的定义以及使用
- 结构体的定义以及使用
- 5.5
- OCP-1Z0-052-V8.02-12题
- 堆栈
- JavaSwing图形界面编程之JButton(一)
- 判断单链表中是否存在环
- 栈的定义以及不同的存储结构的AVA实现
- Q & A: The difference between hard and soft links
- java中的IO整理
- C和C++的又一个区别
- 内核tcp协议栈SACK的处理
- 学习 Json解析数据
- java开发员必备知识图
- linux设置java环境变量
- 大公司面试题(只供个人参看)