基于java的数据结构学习手记4——队列
来源:互联网 发布:捷速ocr文字识别软件 编辑:程序博客网 时间:2024/05/29 16:30
4.队列
在计算机科学中,队列是一种数据结构,有点类似栈,只是在队列中第一个插入的数据项也会是最先被移除(First In First Out,先进先出),而在栈中,最后插入的数据项最先移除(Last In First Out,后进先出)。队列的作用就像电影院前的人们站成的排一样:第一个进入队尾的人将最先到达队头买票。最后排队的人最后才能买到票。
在计算机(或者网络)操作系统里,有各种队列在安静的工作着。打印作业在打印队列中等待打印。当在键盘上敲击时,也有一个存储键入内容的队列。同样,如果使用文字处理程序敲击一个键,而计算机又暂时要做其他的事,敲击的内容不会丢失,在会排在队列中等待,直到文字处理程序有时间来读取它。利用队列保证了键入内容在处理时其顺序不会改变。
循环队列java代码实现:
- package Queue;
- //queue.java
- //demonstrate queue
- public class queue {
- private int maxSize;
- private long[]queArray;
- private int front;
- private int rear;
- private int nItems;
- //..............................................................
- public queue(int s)//constructor
- {
- maxSize=s;
- queArray=new long[maxSize];
- front=0;
- rear=-1;
- nItems=0;
- }
- //..............................................................
- public void insert(long j)
- { if(nItems!=maxSize)
- { if(rear==maxSize-1) //deal with wraparound
- rear=-1;
- queArray[++rear]=j; //increment rear and insert
- nItems++;//one more item
- }
- else System.out.println("The queue is full,please wait");
- }
- //..............................................................
- public long remove() //take item from front of queue
- {
- if(nItems!=0)
- {
- long temp=queArray[front++]; //get value and increase front
- if(front==maxSize) //deal with wraparound
- front=0;
- nItems--; //one less item
- return temp;
- }
- else System.out.println("No item left yet");
- return 0;
- }
- //..............................................................
- public long peekFront()
- {
- return queArray[front];
- }
- //..............................................................
- public int size()
- {
- return nItems;
- }
- //..............................................................
- public boolean isEmpty()
- {
- return (nItems==0);
- }
- }
- package Queue;
- public class QueueApp {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- queue theQueue=new queue(5);
- theQueue.insert(10);
- theQueue.insert(20);
- theQueue.insert(30);
- theQueue.insert(40);
- theQueue.remove();
- theQueue.remove();
- theQueue.remove();
- theQueue.insert(50);
- theQueue.insert(60);
- theQueue.insert(70);
- theQueue.insert(80);
- while(!theQueue.isEmpty())
- {
- long n=theQueue.remove();
- System.out.print(n);
- System.out.print(" ");
- }
- System.out.print(" ");
- }//end main()
- } // end class QueueApp
结果:
- 40 50 60 70 80
- 基于java的数据结构学习手记4——队列
- 基于java的数据结构学习手记3——栈
- 基于java的数据结构学习手记1
- 基于java的数据结构学习手记2
- 基于java的数据结构学习手记5——后缀表达式生成与计算
- 基于java的数据结构学习手记9--双向链表
- 基于java的数据结构学习手记13-基于递归的快速排序
- 基于java的数据结构学习手记6--栈的单链表实现法
- 基于java的数据结构学习手记12-使用Knuth序列的希尔排序
- 基于java的数据结构学习手记14-二叉树的实现
- 基于java的数据结构学习手记7--有序链表插入排序
- 基于java的数据结构学习手记8--循环单链表及其应用约瑟夫环
- 基于java的数据结构学习手记10-使用递归算法做字母单词全排
- 基于java的数据结构学习手记11--递归法数组归并排序
- 基于java的数据结构学习手记15-哈夫曼(huffman)编码解码
- 基于java的数据结构学习手记16-线性探测哈希表实现
- 基于 Python 的数据结构与算法分析学习记录(6-8)—— 基于二叉堆的优先队列
- 数据结构——循环队列的学习
- Java中的类
- 期末考试
- 读肖老师的《不要学偏了》有感
- 开始写毕业论文了
- 最老的东西才是最经典最有用的
- 基于java的数据结构学习手记4——队列
- a
- 揪出Win7里隐藏的微软官方Windows7主题包
- 12月11日周总结
- 就自己的方向前进
- WORD
- 程序员应该注重“解决问题”能力的培养
- english
- 汇编与接口的尾声