教材学习内容总结

第五章

  • 5.1概述
  • 队列是一种线性集合,其元素从一端加入,从另一端删除;队列的处理方式是先进先出(First in First out)。
  • 与栈的比较(LIFO)
  • 栈是一端操作,先进后出

  • 队列是两端操作,先进先出

  • 栈的一些操作

    操作 描述
    enqueue 向队列末端添加一个元素
    dequeue 从队列前端删除一个元素
    first 考察队列前端的那个元素
    isEmpty 判定队列是否为空
    size 判定队列中的元素数目
    toString 返回队列中的字符串表示
  • 5.2javaAPI中的队列:Java集合API并没有提供队列类,而是提供了一个Queue接口,由多个类(包括LinkedList类)来实现的。

  • 5.5队列ADT

    • 接口类中的各个方法
public interface QueueADT<T> {

    public void enqueue(T element);
public T dequeue();
public T first();
public boolean isEmpty();
public int size();
public String toString();
}
}
  • 5.6用链表实现队列:要用链表实现栈,就要操作链表的两端。

    • 需创建两个引用:一个指向链表首元素(head),一个指向链表末元素(tail)
    • 另需一个整型变量count来跟踪队列中的元素数目
  • 5.7用数组实现队列

    • 队列操作会修改集合的两端,因此将队列的某一端固定在数组的索引0处,所有元素不间断地存放在数组中。
    • dequeue操作的复杂度为O(n),所以用固定数组实现栈的效率较低
  • 5.8双端队列

    • 队列的扩展,允许从队列的两端添加、删除和查看元素。

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

  • 问题1:打教材上的代码的时候有些地方总是红色,反复检查发现和教材一致没有打错,后来知道教材其实有一些问题。

  • 解答:比如说这里,教材上是
public CircularArrayQueue() {
this (DEFAULT_CAPACITY);
}

这个()里就会报错,我直接把里面改成100就好了

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

  • 在作LinkedQueue类的first()方法的时候,我是把链表实现栈的peek()方法复制过来修改的,但是测试总是有问题,而且在CircularArrayQueue类也是这么做出来的却没有问题。

  • 最后我还是不知道为什么,我直接把
//        if (isEmpty())
// throw new EmptyCollectionException("queue");

注释掉了就可以了,等我再想想正常的方法再来修改。

更新 更新 更新

我发现了是我tostring的方法有问题,原来这样写,使用这个方法后栈就被清空了,所以弹出会错误,改为之后就可以了

代码托管

上周考试错题总结

结对及互评

  • 20172324曾程
  • 博客中值得学习的或问题:
    • 书上代码的学习很到位
    • 代码调试环节比较详细,从截图上来看注释也很规范整齐,值得学习。
  • 基于评分标准,我给本博客打分:11分。得分情况如下:
    • 正确使用Markdown语法(加1分)
    • 模板中的要素齐全(加1分)
    • 教材学习中的问题和解决过程, 加4分
    • 代码调试中的问题和解决过程, 加4分
    • 本周有效代码超过300分行,加2分
    • 进度条中记录学习时间与改进情况的加1分

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 0/0 1/1 8/8
第二周 671/671 1/2 17/25
第二周 345/1016 1/3 15/40

参考资料

20172321 2018-2019《Java软件结构与数据结构》第三周学习总结的更多相关文章

  1. 20172328 2018—2019《Java软件结构与数据结构》第二周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第二周学习总结 概述 Generalization 本周学习了第三章集合概述--栈和第四章链式结构--栈.主要讨论了集合以 ...

  2. 20172328 2018-2019《Java软件结构与数据结构》第一周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第一周学习总结 概述 Generalization 本周学习了软件质量.数据结构以及算法分析的具体内容,主要依托于所用教材 ...

  3. 20172328 2018-2019《Java软件结构与数据结构》第九周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第九周学习总结 概述 Generalization 本周学习了无向图.有向图.带权图.常用的图算法.图的实现策略. 教材学 ...

  4. 2018-2019-20172329 《Java软件结构与数据结构》第九周学习总结

    2018-2019-20172329 <Java软件结构与数据结构>第九周学习总结 教材学习内容总结 <Java软件结构与数据结构>第十五章-图 一.图及无向图 1.图的相关概 ...

  5. 2018-2019-20172321 《Java软件结构与数据结构》第九周学习总结

    2018-2019-20172321 <Java软件结构与数据结构>第九周学习总结 教材学习内容总结 第15章 图 无向图 图由顶点和边组成. 顶点由名字或标号来表示,如:A.B.C.D: ...

  6. 《JAVA软件结构与数据结构》第一周学习总结

    学号 20172326 <JAVA软件结构与数据结构>第一周学习总结 教材学习内容总结 软件质量的几大特性 增长函数与大O记法 大O记法用来表示表示增长函数,从而来表示算法的复杂度 算法的 ...

  7. 2018-2019-20172329 《Java软件结构与数据结构》第二周学习总结

    2018-2019-20172329 <Java软件结构与数据结构>第二周学习总结 教材学习内容总结 <Java软件结构与数据结构>第三章 集合概述--栈 一.集合 1.我们印 ...

  8. 20172305 2018-2019-1 《Java软件结构与数据结构》第二周学习总结

    20172305 2018-2019-1 <Java软件结构与数据结构>第二周学习总结 教材学习内容总结 本周内容主要为书第三章和第四章的内容: 第三章(以数组来替代栈的作用) 集合(聚集 ...

  9. 20172305 2018-2019-1 《Java软件结构与数据结构》第九周学习总结

    20172305 2018-2019-1 <Java软件结构与数据结构>第九周学习总结 教材学习内容总结 本周内容主要为书第十五章内容: 图(结点和结点之间的连接构成) 顶点:结点 边:结 ...

  10. 20172329 2018-2019《Java软件结构与数据结构》第一周学习总结

    2018-2019-20172329 <Java软件结构与数据结构>第一周学习总结 在这学期就已经大二了,也已经步入了学习专业课的核心时间,在这个阶段,我们应该了解自己的学习情况,针对自己 ...

随机推荐

  1. 【TOJ 1072】编辑距离(动态规划)

    描述 假设字符串的基本操作仅为:删除一个字符.插入一个字符和将一个字符修改成另一个字符这三种操作. 我们把进行了一次上述三种操作的任意一种操作称为进行了一步字符基本操作. 下面我们定义两个字符串的编辑 ...

  2. 什么是cookie,作用是什么? 以及session的理解

    cookie: 1.定义:什么是cookie?  cookie就是存储在客户端的一小段文本 2.cookie是一门客户端的技术,因为cookie是存储在客户端浏览器中的 3.cookie的作用:是为了 ...

  3. PHP打包zip并下载

    $file_template = FCPATH.'canddata/cand_picture.zip';//在此之前你的项目目录中必须新建一个空的zip包(必须存在) $downname = $car ...

  4. Delphi调用爷爷类的方法

    Delphi通过inherited 可以调用父类的方法,但是没有提供直接调用父类的父类的方法(爷爷类),通过变通的方式实现如下: 假设父类是TFather,爷爷类TGrand,调用爷爷类的Write方 ...

  5. Python3中高阶函数lambda,filter,map,reduce,zip的详细用法

    在Python里有五大高阶函数,他们分别是lambda()匿名函数,filter()筛选函数,map()函数,reduce()函数,zip()函数.下面就让我们来详细的了解一下这五种函数的具体用法吧. ...

  6. PTA(BasicLevel)-1006换个格式输出整数

      一  换格式输出整数 用字母 B 来表示“百”.字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数.例如 234 应该被 ...

  7. C语言程序设计:现代方法(第2版)第三章全部习题答案

    前言 本人在通过<C语言程序设计:现代方法(第2版)>自学C语言时,发现国内并没有该书完整的课后习题答案,所以就想把自己在学习过程中所做出的答案分享出来,以供大家参考.这些答案是本人自己解 ...

  8. [Err] ERROR: wrong record type supplied in RETURN NEXT

    在写GP 输出不定长列数据表 函数时,报了一个错,百思不得其解.在公司大佬帮助下,知道是什么鬼了.. 先看看例子吧: ---- 函数定义 CREATE OR REPLACE FUNCTION &quo ...

  9. 20155318 2016-2017-2 《Java程序设计》第三周学习总结

    20155318 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 一.类与对象 Clothes c1 = new Clothes();将c1名称参考至新建对象 ...

  10. rem布局注意问题和meta标签

    使用rem前的准备: 如果是移动端,添加name="viewport"的meta标签,其中的属性数值根据实际需求而定: <meta name="viewport&q ...