Java数据结构和算法--栈与队列
(1)栈
package ChapterOne;public class Stack {//栈数组long stackArr[];//栈的大小int maxSize;//栈的顶部int top;//初始化一个大小为size的栈public Stack(int size){maxSize = size; stackArr = new long[size];top = -1;}//出栈操作public long pop(){return stackArr[top--];}//进栈操作public void push(long value){stackArr[++top] = value;}//判断栈是否为空public boolean isEmpty(){return top == -1;}//判断栈是否已满public boolean isFull(){return top == maxSize-1;}//取栈顶元素public long peek(){return stackArr[top];}public static void main(String[] args) {Stack stack = new Stack(10);while(!stack.isFull()){long v = (long) (Math.random()*100);stack.push(v);System.out.print(v+" ");}System.out.println();while(!stack.isEmpty()){long topValue = stack.pop();System.out.print(topValue+" ");}System.out.println();}}(2)队列
package ChapterOne;public class Queue {//队列数组private long queueArr[];//队列的前端下标private int front;//队列的尾端下标private int rear;//队列的大小private int maxSize;//队列中元素的个数private int nItems;//初始化一个大小为size的队列public Queue(int size){queueArr = new long[size];maxSize = size;front = 0;rear = -1;nItems = 0;}//插入操作public void insert(long value){//队列已满if(rear == maxSize-1)rear = -1;queueArr[++rear] = value;nItems++;}//删除操作public long remove(){long temp = queueArr[front++];if(front == maxSize)front = 0;nItems--;return temp;}//返回队列第一个元素public long peakFront(){return queueArr[front];}//判断是否为空public boolean isEmpty(){return nItems == 0;}//判断是否已满public boolean isFull(){return nItems == maxSize;}//返回队列中元素的个数public int size(){return nItems;}public void print(){for(int i = front;i < front+nItems;i++){System.out.print(queueArr[i]+" ");}System.out.println();}public static void main(String[] args) {Queue q = new Queue(10);while(!q.isFull()){long value = (long)(Math.random()*100);q.insert(value);}q.print();while(!q.isEmpty()){q.remove();q.print();}q.print();System.out.println(q.isEmpty());}}(3)优先队列
package ChapterOne;public class PriorityQueue {private int nItems;private long pqArr[];private int maxSize;public PriorityQueue(int size){maxSize = size;pqArr = new long[size];nItems = 0;}public void insert(long value){int i;if(nItems == 0)pqArr[nItems++] = value;else{for(i = nItems-1;i >= 0;i--){if(value < pqArr[i]){pqArr[i+1] = pqArr[i];}elsebreak;}pqArr[i+1] = value;nItems++;}}public long remove(){return pqArr[--nItems];}public boolean isEmpty(){return nItems == 0;}public boolean isFull(){return nItems == maxSize;}public void print(){for(int i = 0;i < nItems;i++)System.out.print(pqArr[i]+" ");System.out.println();}public static void main(String[] args) {PriorityQueue pq = new PriorityQueue(10);while(!pq.isFull()){long value = (long)(Math.random()*100);pq.insert(value);}pq.print();}}