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

本文总结了《程序设计与数据结构》课程第五周的学习内容,重点介绍了栈的概念及其在数组和链表中的实现方法,并分享了学习过程中遇到的问题及解决思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

20162303 2017-2018-1 《程序设计与数据结构》第五周学习总结

教材学习内容总结

  • 了解集合的概念
  • 栈 仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
    1064441-20171015173249230-1316817112.jpg
  • 栈的操作
    1064441-20171015175704715-1142420390.jpg

1064441-20171015174117527-554096666.jpg

  • 用数组实现栈
    首先要估计栈的最大容量以免发生溢出,arraystack中提到有关扩容的内容
    private void expandCapacity()
    {
    T[] larger = (T[])(new Object[stack.length*2]);
    for (int index=0; index < stack.length; index++)
    larger[index] = stack[index];
    stack = larger;
    }
    }

通过这种方法可以动态调节数组的大小。

  • 用链实现栈
    用用链实现栈需要创建一个有头结点的链表,从第一个节点出发即可定位所有节点。只需要在链表的一端进行操作,第一个元素入栈到链表的第一个位置,第二个元素到链表的第2个位置。

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

  • 问题:不太理解哨兵结点的涵义
  • 问题解决:在许多算法中,存在“邻居依赖问题”(我自己造的词),在处理当前元素时,要涉及到它旁边那个元素。那如果当前元素是边界元素呢,它没有旁边那个元素,如果不作处理,程序就可能出错;如果对它特别对待,就会增加代码复杂性,还会降低程序效率。应用哨兵,也就是申请若干个多余的元素作为边界元素的邻居,可以完美得解决这个问题。
    参考链接

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

  • 问题1:arraystack刚开始一直无法成功运行
  • 问题1解决方案:在经过网上查找,在补充完所有方法后,arraystack可以正常运行了。

代码托管

1064441-20171015232153402-801910410.jpg

结对及互评

点评模板:

  • 博客中值得学习的或问题:
    • 排版精美
    • 总结十分详细
    • 解决方案清晰明了

本周结对学习情况

- [20162307](http://www.cnblogs.com/Tiffany23/)
- 结对学习内容
    - 一块研究上课所学内容
    - 小组博客交流

其他

本周实验完成的不太顺利,书里内容理解出现了一些偏差,不过之后咨询了同学,理解改变了。希望继续努力,继续进步吧

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周70/701/112/12
第三周208/2781/212/24
第五周529/8071/312/36

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:12小时

  • 实际学习时间:12小时

参考资料

转载于:https://www.cnblogs.com/syx390234975/p/7671217.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值