博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20172304 《程序设计与数据结构》第三周学习总结
阅读量:6693 次
发布时间:2019-06-25

本文共 1868 字,大约阅读时间需要 6 分钟。

20172304 《程序设计与数据结构》第三周学习总结

教材学习内容总结

第五章主要对队列进行了介绍,队列从一端进入从量一端删除,队列遵循先进先出的原则(First in First out FIFO)

队列ADT应该包含的方法:

操作 说明
enqueue 向队列末端添加一个元素
dequeue 从队列前端删除一个元素
first 考察队列前端的那个元素
isEmpty 判定队列是否为空
size 判断队列中的元素数目
toString 返回对列的字符串表示

java集合API提供了java.util.Stack类,它实现了栈集合。没有提供队列类。而是提供了一个Queue的接口,由多个类实现

队列的应用:
代码密钥:使用队列储存密钥,可以重复使用,对密文进行加解密。
售票口模拟:现创立一个Customer类,储存顾客的时间。使用队列模拟客户的实践,进行试验来模拟售票口的情况,最后确定最佳的售票口数量。
队列的实现:
使用链表实现队列:需要定义两个指针,一个head,一个tail,还有一个统计元素数量的int值count,方便在队首和队尾,进行插入和删除。双向链表实现比单链表容易。
使用数组实现队列:用两个整数型变量rear,和front来表示数组的头和尾(注意在这里,两个整数型不代表储存的位置,而是表示队列的顺序,在采用环形数组是,更要注重对rear和front把握,否则就会丢失队列中的数据)

教材学习中的问题和解决过程

  • 问题1:有关环形数组的相关问题。
  • 问题1解决方案:一开始真的很懵懂,环?怎么能把数组掰弯!变成一个环?后来经过长期的艰苦奋斗,终于理解了,这个环,在我的理解中并不是一个真正的环而是一个逻辑上的环,通过两个索引值进行标记确定首尾,尾索引可以借助“rear =(rear+1)%queue.length”这条语句在到达索引值上线时过渡到数组的首端,从而在真正的逻辑上形成一个真正环形数组。

代码调试中的问题和解决过程

  • 问题1:在进行测试时发现无法引用变量。还有toString方法没有办法正常调用

    1333068-20180926232316623-1812420782.png
    1333068-20180926232330233-1645204276.png

  • 问题1解决方案:后来发现是没有加运行函数。还有在toString的函数里没有将那个环形数组中开头的索引值随循环做自减运算。
  • 问题2:发现一堆错误。

    1333068-20180926232725530-833046175.png
    1333068-20180926232732152-566910763.png

  • 问题2解决方案:最终发现是自己实现的isEmpty方法有问题,后将if的判断语句由(head.getelement==null)改为(head==null)就OK了。

1333068-20180926233026020-276567441.png

补充作业

技能 课前 课后
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.

转载于:https://www.cnblogs.com/15248252144dzx/p/9707056.html

你可能感兴趣的文章
hadoop命令执行hbase应用jar包时的环境变量加载问题
查看>>
awk常用注意事项--awk如何引用外部变量
查看>>
XenMobile学习文章总结
查看>>
Android开发者的混淆使用手册
查看>>
Telnet服务及协议
查看>>
SpringMVC深度探险
查看>>
关于vs2010巨慢(cpu占用高)的几种解决方式
查看>>
简单3步,轻松集成Testlink和MantisBT
查看>>
SQL语句教程(04) AND OR
查看>>
EBS 12.1.3 db 11.2.3 dg AND DG SWITCH OVER
查看>>
Oracle中的JOIN
查看>>
html中iframe控制父页面刷新
查看>>
每天一个linux命令(50):crontab命令
查看>>
linux命令7--cat命令&nl命令
查看>>
.NET底层开发技术
查看>>
RHEL regiester
查看>>
c/c++中的一些基础知识
查看>>
练习:输出整数每一位,计算算数,9出现次数,输出图案,水仙花数
查看>>
操作系统的发展
查看>>
HEVC码流简单分析
查看>>