java数据结构与算法 第4章 栈和队列
2016-11-13 21:02
501 查看
1.栈
栈只允许访问一个数据项, 即最后插入的数据项,移除这个数据项才能访问倒数第二个插入的数据项,依此类推。以下是java实现的栈:
2.队列
和栈类似,但是先插进入的先出。
栈只允许访问一个数据项, 即最后插入的数据项,移除这个数据项才能访问倒数第二个插入的数据项,依此类推。以下是java实现的栈:
package exam; public class StackTest { public static void main(String[] args) { // TODO Auto-generated method stub StackX stackArray =new StackX(10); stackArray.push(10); stackArray.push(20); stackArray.push(30); stackArray.push(40); stackArray.push(50); while (!stackArray.isEmpty()) { long value=stackArray.pop(); System.out.println(value); //结果 // 50 // 40 // 30 // 20 // 10 } } } class StackX{ private int maxSize; //栈数组大小; private long[] stackArray; private int top; public StackX(int s){ maxSize=s; //数组大小 stackArray=new long[maxSize]; //创建数组 top=-1; } //插入元素 public void push(long i){ stackArray[++top]=i; } public long pop(){ return stackArray[top--]; } public long peek(){ return stackArray[top]; } public boolean isEmpty(){ return (top==-1); } public boolean isFull(){ return (top==maxSize-1); } }
2.队列
和栈类似,但是先插进入的先出。
package exam; public class QueueTest { public static void main(String[] args) { Queue testQueue= new Queue(5); testQueue.insert(10); testQueue.insert(30); testQueue.insert(40); testQueue.insert(20); testQueue.remove(); testQueue.remove(); testQueue.remove(); testQueue.insert(60); testQueue.insert(70); testQueue.insert(80); testQueue.insert(90); while (!testQueue.isEmpty()) { long n=testQueue.remove(); System.out.println(n); } } } class Queue{ private int maxsiza; private long[] queArray; private int front; //对头 private int rear; //队尾 private int nItems; //当前数据项的个数 public Queue(int s){ maxsiza=s; queArray=new long[maxsiza]; front = 0; rear =-1; nItems = 0; } //插入的前提应该是队列不满 ISFull()为true public void insert(long j){ if(rear==maxsiza-1) rear =-1; queArray[++rear] = j; nItems++; } //remove方法的前提是队列不为空 public long remove(){ long temp =queArray[front++]; if(front == maxsiza) front = 0; nItems--; return temp; } public long peekFront(){ return queArray[front]; } public boolean isEmpty(){ return (nItems==0); } public boolean isFull(){ return (nItems==maxsiza); } public int size() { return nItems; } }
相关文章推荐
- Java数据结构与算法之优先级队列
- Java数据结构和算法(五)——队列
- java数据结构和算法------队列
- Java数据结构与算法:队列
- Java数据结构与算法 - 栈和队列
- Java数据结构和算法(五)——队列
- java数据结构与算法之(Queue)队列设计与实现
- 【Java】Java数据结构和算法(二)——栈和队列
- JAVA数据结构和算法:第三章(栈和队列)
- java数据结构与算法之(Queue)队列设计与实现
- Java数据结构和算法(五)——队列
- Java数据结构和算法——队列
- java数据结构和算法-2,栈和队列
- Java数据结构与算法之Queue队列
- 【Java数据结构学习笔记之三】Java数据结构与算法之队列(Queue)实现
- Java数据结构和算法--栈与队列
- 队列的创建 入队出队 Java数据结构与算法
- Java数据结构和算法-栈和队列(3-优先级队列)
- Java数据结构和算法-栈和队列(4-解析算术表达式)
- Java数据结构与算法解析(三)——队列与背包