数据结构(Java)---栈
来源:互联网 发布:youtube显示无网络连接 编辑:程序博客网 时间:2024/06/05 10:50
栈是一种特殊的线性表,栈的插入和删除只能在表的尾端进行。栈是一种后进先出(Last In First Out)的线性表。
栈的抽象数据类型:
public interface IStack { public void clear(); public boolean isEmpty(); public int length(); public Object peek();//取栈顶元素 public void push(Object x) throws Exception;//插入 public Object pop() ;//删除栈顶元素 public void display();}
栈分为顺序栈和链栈
顺序栈
顺序栈是通过数组来实现的
public class SqStack implements IStack{ private int top;//top为指向下一个存储单元的位置 private Object[] stackElem; public SqStack(int maxSize){ top=0; stackElem=new Object[maxSize]; } public void clear(){ top=0; } public boolean isEmpty(){ return top==0; } public int length(){ return top; } public Object peek(){ if(!this.isEmpty()) return this.stackElem[top-1]; return null; } public void push(Object x)throws Exception{ if(top==stackElem.length) throw new Exception("栈已满"); stackElem[top]=x; top++; } public Object pop() { if(this.isEmpty()) return null; return stackElem[--top]; } public void display(){ for(int i=top-1;i>=0;i--) System.out.print(stackElem[i].toString()+" "); System.out.println(); }}
链栈
因为链栈不存在任意位置的插入和删除操作,所以并不需要头结点
class Node{ //结点类 public Object data; public Node next; public Node(){ this.data=null; this.next=null; } public Node(Object data){ this.data=data; this.next=null; } public Node(Object data,Node next){ this.data=data; this.next=next; }}public class LinkStack implements IStack{ private Node top; public LinkStack(){ top=new Node(); } public void clear(){ top=null; } public boolean isEmpty(){ return top==null; } public int length(){ int length=0; while(top!=null){ length++; top=top.next; } return length; } public Object peek(){ if(!this.isEmpty()) return top.data; return null; } public void push(Object x){ Node p=new Node(x); p.next=top; top=p; } public Object pop(){ if(this.isEmpty()) return null; Object p=top.data; top=top.next; return p; } public void display(){ while(top!=null){ System.out.print(top.data+" "); top=top.next; } System.out.println(); }}
阅读全文
0 0
- 数据结构--栈(java)
- Java数据结构(栈)
- 数据结构(Java)---栈
- Java数据结构-栈(1)
- Java数据结构-栈(2)
- 堆和栈(Java数据结构)
- 堆和栈(Java数据结构)
- 数据结构 JAVA描述(二) 栈
- java数据结构(二)——栈
- java数据结构(四)——栈
- 数据结构之-栈(Java实现)
- 数据结构之栈(java版)
- 数据结构(Java)--栈和队列
- 数据结构(栈)c/c++/java实现
- Java与数据结构(三) 栈
- 数据结构栈的定义(java)
- 数据结构之--栈(Java代码)
- java 实现栈数据结构
- 视图
- Oracle 用户、对象权限、系统权限
- JSP
- myeclipse的项目红色感叹号
- window10 esc和锁定大写键交换
- 数据结构(Java)---栈
- 语音助手产品攻击——海豚音攻击
- array array array-- 2017 ACM/ICPC Asia Regional Shenyang Online
- 数据库视频总结(三)
- Unity3D 设计模式几大原则详解
- BFS——NYOJ 21 三个水杯
- c++学习之用c++写一个教务管理系统
- 解除Linux最大进程数和最大文件句柄打开数限制
- 51nod 1832 先序遍历与后序遍历(DFS)