浏览 4353 次
锁定老帖子 主题:Java数据结构和算法--栈与队列
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-30
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]; } else break; } 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(); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |