数据结构学习之栈的Java实现
2017-07-24 13:59
288 查看
介绍
栈是一种后进先出的数据结构,就像盖房子的砖头一样,后来者居上。栈只允许在一端进行插入和删除操作,叫做栈顶。栈也有两种实现方式,一种用数组实现,叫顺序栈,另一种用链表实现,叫做链栈。顺序栈
package Stack; /** * Created by xiaojian on 2017/7/20. * 顺序栈 入栈 出栈 判空 返回栈顶元素 */ public class SequenceStack { private Object[] data = new Object[5]; // 栈顶 private int top=0; // 元素个数 private int size=0; // 入栈 public void push(Object o){ if(isFull()){ increStack(); } data[top++] = o; size++; } // 出栈 public Object pop(){ if(isEmpty()){ throw new RuntimeException("栈空"); } Object o = data[top-1]; data[--top] = null; size--; return o; } // 返回栈顶元素 public Object getTop(){ if(!isEmpty()){ return data[top-1]; } return null; } // 扩容 public void increStack(){ Object[] newData = new Object[data.length * 2]; System.arraycopy(data,0,newData,0,data.length); data = newData; } // 遍历 public void display(){ while(!isEmpty()){ System.out.println(pop()); } } // 判空 public boolean isEmpty(){ return size == 0; } // 栈满 public boolean isFull(){ return size == data.length; } }
链栈
package Stack; /** * Created by xiaojian on 2017/7/21. * 结点类 */ public class Node { private Object data; private Node next; public Object getData() { return data; } public void setData(Object data) { this.data = data; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } }
package Stack; /** * Created by xiaojian on 2017/7/20. * 链栈 */ public class LinkQueue { private Node top = null; private int size =0; // 进栈 public void push(Object o){ Node node = new Node(); node.setData(o); if(top==null){ top = node; }else{ node.setNext(top); top= node; } size++; } // 出栈 public Object pop( ){ if(isEmpty()){ throw new RuntimeException("栈空"); }else { Node node = top; top = top.getNext(); node.setNext(null); size -- ; return node.getData(); } } //返回栈顶元素 public Object getTop(){ if(isEmpty()){ throw new RuntimeException("栈空"); } return top.getData(); } // 遍历 public void display(){ while(top!=null){ System.out.println(pop()); } } public boolean isEmpty(){ return size == 0; } }
相关文章推荐
- 一步步学习数据结构和算法之堆排序效率分析及java实现
- 一步步学习数据结构和算法之快速排序效率分析及java实现
- 数据结构学习----线性表的链式表示之循环双链表(Java实现)
- 数据结构学习----线性表的链式表示之升序排序的单链表(Java实现)
- 数据结构学习----链式队列(Java实现)
- 一步步学习数据结构和算法之选择排序效率分析及java实现
- 一步步学习数据结构和算法之冒泡排序效率分析及java实现
- 数据结构学习之用Java实现AVL树
- 【Java数据结构学习笔记之一】线性表的存储结构及其代码实现
- 数据结构学习----链式栈(Java实现)
- 【Java数据结构学习笔记之二】Java数据结构与算法之栈(Stack)实现
- 数据结构学习之冒泡排序Java实现
- 跟小刀学习 java 数据结构 栈和队列的实现
- java学习笔记之实现基本数据结构——栈
- 数据结构学习----线性表的链式表示(Java实现)
- 数据结构学习之链表的Java实现
- 一步步学习数据结构和算法之希尔排序效率分析及java实现
- Java基础课程学习总结,使用LinkedList简单模拟队列数据结构和堆栈数据结构的实现
- 一步步学习数据结构和算法之归并排序效率分析及java实现
- 数据结构学习----线性表的链式表示之循环单链表(Java实现)