第五章主要对队列进行了介绍,队列从一端进入从量一端删除,队列遵循先进先出的原则(First in First out FIFO)
队列ADT应该包含的方法:php
操做 | 说明 |
---|---|
enqueue | 向队列末端添加一个元素 |
dequeue | 从队列前端删除一个元素 |
first | 考察队列前端的那个元素 |
isEmpty | 断定队列是否为空 |
size | 判断队列中的元素数目 |
toString | 返回对列的字符串表示 |
java集合API提供了java.util.Stack类,它实现了栈集合。没有提供队列类。而是提供了一个Queue的接口,由多个类实现
队列的应用:
代码密钥:使用队列储存密钥,能够重复使用,对密文进行加解密。
售票口模拟:现创立一个Customer类,储存顾客的时间。使用队列模拟客户的实践,进行试验来模拟售票口的状况,最后肯定最佳的售票口数量。
队列的实现:
使用链表实现队列:须要定义两个指针,一个head,一个tail,还有一个统计元素数量的int值count,方便在队首和队尾,进行插入和删除。双向链表实现比单链表容易。
使用数组实现队列:用两个整数型变量rear,和front来表示数组的头和尾(注意在这里,两个整数型不表明储存的位置,而是表示队列的顺序,在采用环形数组是,更要注重对rear和front把握,不然就会丢失队列中的数据)html
问题1:在进行测试时发现没法引用变量。还有toString方法没有办法正常调用
前端
问题2:发现一堆错误。
java
问题2解决方案:最终发现是本身实现的isEmpty方法有问题,后将if的判断语句由(head.getelement==null)改成(head==null)就OK了。git
技能 | 课前 | 课后 |
---|---|---|
Programming: Comprehension(程序理解) (如何理解已有的程序,经过阅读,分析,debug) | 4 | 7 |
Programming: Design (架构设计, 模块化设计,接口设计) | 2 | 6 |
Programming: Test (单元测试、代码覆盖率) | 2 | 4 |
Program: Performance (效能分析和改进) | 1 | 5 |
Programming: Code Review/Code Quality (代码复审/代码规范/代码质量) | 1 | 3 |
Programming: Command line and files (处理命令行参数和文件系统) | 1 | 4 |
Personal Software Process (我的软件过程) :我的源码管理(TFS/GitHub) | 3 | 7 |
本周通过了紧张而充分的学习,学会了用链表实现队列用数组实现队列等。还接触到了存在于逻辑上的数组——“环形数组”。感受本身从灵魂上的到了升华。路漫漫其修远兮,吾将上下而求索。
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 30/30 | 1/1 | 10/10 | |
第二周 | 766/796 | 1/2 | 40/50 | |
第三周 | 817/1613 | 1/3 | 20/7 |
1.蓝墨云班课
2.java软件结构与数据结构web