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

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

教材学习内容总结

第三章

  • 集合能隐藏某些细节。
    • 线性集合和非线性集合
  • 抽象数据类型(ADT)
    集合是一种隐藏了实现细节的抽象。
  • Java集合API(Application Programming Interface)
  • 栈 (后进先出)
    例如:批改做业,进出电梯。
    本性:全部的操做都是在一端进行。 一端指的是顶端,因此栈不适用解决须要访问集合中间或底部的元素的问题。
  • 使用栈计算后缀表达式
    注意:当遇到一个操做符时,计算规则应能够检索其以前的两个操做数。第一个弹出的操做数实际上是表达式的第二个操做数,而第二个弹出的操做数则是表达式的第一个操做。对于除法和减法须要特别注意。

第四章

  • 连接做为引用
    • 对象引用变量能够用来建立链式结构。
    • 对象引用变量存放的是对象的地址,表示该对象在内存中的存储位置。
    • 链表有一些对象构成,其中每一个对象指向了链表中的下一对象。
    • 链表会按需动态增加,所以在本质上,它没有容量限制。
    • 链表的大小能够按需伸缩以容纳要存储的元素数量,所以链表是动态结构。全部动态建立的对象都来自于一个名为系统堆自由存储的内存区。
  • 管理链表
  • 从列表中插入和删除元素时有两种状况:一种是处理第一个结点的状况,另外一种时处理其它结点的状况。经过在列表的前端引入哨兵节点哑节点,就能够去除这种涉及第一个结点的状况。哨兵结点能够做为一个假的第一个结点,并无真正表示列表中的某个元素。当使用了哨兵结点时,全部的插入和删除操做就都属于第二种状况了。html

  • 无连接的元素
  • 存储在集合中的对象不该该含有基本数据结构的任何实现细节。前端

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

  • 问题1:UML类图符号箭头含义。
  • 问题1解决方案:这个在上学期探究过,可是并无记住,故仍是要从新加深一遍记忆,方便后来的学习。
    • 1.类(Class):使用三层矩形框表示。 第一层显示类的名称,若是是抽象类,则就用斜体显示。 第二层是字段和属性。 第三层是类的方法。 注意前面的符号,‘+’表示public,‘-’表示private,‘#’表示protected。
    • 2.接口:使用两层矩形框表示,与类图的区别主要是顶端有< >显示 。 第一行是接口名称。 第二行是接口方法。
    • 3.继承类(extends) :用空心三角形+实线来表示。
    • 4.实现接口(implements) :用空心三角形+虚线来表示
    • 5.关联(Association) :用实线箭头来表示,例如:燕子与气候
    • 6.聚合(Aggregation) :用空心的菱形+实线箭头来表示 聚合:表示一种弱的‘拥有’关系,体现的是A对象能够包含B对象,但B对象不是A对象的一部分,例如: 公司和员工
    • 7.组合(Composition):用实心的菱形+实线箭头来表示 组合:部分和总体的关系,而且生命周期是相同的。例如:人与手
    • 8.依赖(Dependency) :用虚线箭头来表示,例如:动物与氧气
  • 问题2:书P36 设计要点 提到git

    取消操做一般是使用一种名为drop - out的栈来实现的。
    与通常栈不一样的是drop - out栈对能存储的元素数量有限制,一旦达到限制,若是有新元素要压入,那么栈底的元素将被从栈中丢弃掉。算法

  • 问题2解决方案:能够从新申请一块数组空间。 拷贝一下数据,释放原来的数据,删除第一个元素,并总体向前移动。数组

  • 问题3:Stack类是从Vector类派生而来的。一些操做会与栈的基本假设发生冲突?
  • 问题3解决方案:
    数据结构

并未从API中找到结果。less

  • 问题4:链表栈的push操做在链表末端而不是在链表前段添加结点。时间复杂度如何?
  • 问题4解决方案:
    • 要在链表末端压入结点,咱们必须遍历链表以达到这个末元素。此时时间复杂度为O(n)
    • 添加一个老是指向链表末元素的引用,会影响链表末元素的删除。此时时间复杂度为O(1)

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

  • 问题1:头指针和头结点
  • 问题1解决方案:
    • 头指针是指指向开始结点的指针(没有头结点的状况下)。一个单链表能够由其头指针惟一肯定,通常用其头指针来命名单链表。
    • 头结点是在链表的开始结点以前附加的一个结点。有了头结点以后头指针指向头结点,不论链表是否为空,头指针老是非空,并且头结点的设置使得对链表的第一个位置上的操做与在表中其它位置上的操做一致。
    • 头结点能够没有,可是头指针不能没有,否则没法访问链表的元素;
    • 头结点须要分配内存给它,而头指针不须要。
  • 问题2:AS中组件不显示问题。提示错误: failed to load AppCompat ActionBar with unkNown error
    学习

  • 问题2解决方案:
    • 在AndroidManifest.xml文件中找到全局样式文件 Theme,按住Ctrl+鼠标点进去
      .net

    • 进入到这个文件,在前面增长 “Base”
      设计

  • 问题3:AS报错
    This view is not constrained, it only has designtime positions, so it will jump to (0,0) unless you

  • 问题3解决方案:
    • 点击“魔法棒”。

代码托管

上周考试错题总结

  • If the algorithm is inefficient, a faster processor will help. B
    A .True
    B .Flase
  • 解析:若是算法效率低下,一个更快的处理器将有所帮助。确定有所帮助啊,可是帮助的这个尺度很难把握。

结对及互评

点评过的同窗博客和代码

  • 本周结对学习状况
    • 20172304
    • 教材总结的很是细致,学习态度严谨不少,问题略简单,教材问题中“医疗”应该是“意料”吧,因而可知,答案也不是单纯的复制粘贴,有本身的思考和理解。
    • 20172328
    • 教材内容图文并茂,内容很是丰富。代码问题1的解决方案的贴图尚未,应该是忘记上传了吧。冒泡排序和插入排序是同一种排序么,我记得上学期冒泡排序有个别名。

其余

放弃不难,但坚持必定很酷。事情没有好坏对错。坚持了,努力了,成功与否都显得再也不重要。舞台是否光鲜,全在于你。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 10/10
第二周 610/610 1/2 20/30

参考资料

相关文章
相关标签/搜索