20172324 2018-2019-1 《程序设计与数据结构》第二周学习总结

Posted amberr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20172324 2018-2019-1 《程序设计与数据结构》第二周学习总结相关的知识,希望对你有一定的参考价值。

20172324 2018-2019-1 《程序设计与数据结构》第二周学习总结

教材学习内容总结

第三章:集合概述——栈

集合

  • 概念
  1. 集合是一种聚集、组织了其他对象的对象。集合的使用者(软件系统中的另一个类或对象)只能通过这些预定的方式和该集合进行交互
  2. 集合可以分为两大类:线性集合和非线性集合
  • 抽象数据类型
  1. 抽象数据类型是一种在程序设计语言中尚未定义其值和操作的数据类型。ADT必须对实现细节进行定义,且这些定义对用户是不可见的。
  2. 数据结构是一种用于实现集合的编程结构集。集合本身与实现集合的数据结构是分离的,可以用线性数据结构来实现非线性集合。
  • Java集合API

栈集合,利用栈计算后缀表达式

LIFO原则

主要的面向对象概念

  • 继承与多态性、泛型(例如栈ADT)
  • AraayStack类(学习pop、push、peek和其他操作)

第四章:链式结构——栈

(我没上这一节课,所以看得我还是挺懵的,感觉)

链式结构

  1. 指针:引用变量
  2. 结点:储存的对象
  3. 访问元素不能直接将指针移到要访问的元素处,这样会丢失之前所有的元素
  4. 插入结点前要先重新设置指向整个列表的引用
  5. 删除结点要特别注意首结点的删除方法

无链接的元素和双向列表

LinkStack

链表会按需求动态增长,因此在本质上,没有容量限制。

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

  • 问题1:泛型和多态的关系(这都是些啥鸭??
  • 问题1解决方案:没有关系。具体的参考这个讲得蛮复杂的封装,继承,多态,重载,重写和泛型详解(附图),但是简单来说就是泛型就是类型参数化,通过使用接口返回类型,方法就不会局限于实现栈的任何特定类。多态就是多个类由继承(实现接口)得到的一致外观, 好处是简化代码, 隔绝修改。

  • 问题2:p52"通过在列表前端引入哨兵结点和哑结点,就可以除去这种涉及第一个结点的情况"哨兵结点和哑结点分表是什么意思?
  • 问题2解决方案:看错了??我以为两者之间是“和”,结果是“或”。哨兵结点是个哑元结点,可以简化边界条件,使代码更紧凑,并不存储任何实质的数据。

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