综合任务
1.面向对象与面向过程相比, 有哪些优势? 注: 第 1 - 10 天的程序, 就是面向过程的.
面向对象是一系列方法逐步运用于对象,更直观的有步骤,更符合人类逻辑。
2.比较线性表和链接的异同.
相似之处是都表示了某类数据之间的顺序关系。
不同的是线性表更在意的是某个数据自己的绝对位置,而不是相对位置。链表则需要一个明确的header,由header中的next才能一直找到下一个node的地址。next是一个node类型的数据,但实质上并未new一个node类型数据,而是指向某个node的位置。因此,链表若改变next关系,会使得所有数据一起挪动。
由于链表的特性,并不像线性表可以明确规定一个max_length,而可以通过循环队列这种方式规定head到tail的距离,从而限制最大长度。
3.分析线性表和链表的优缺点.
线性表由于是绝对位置,对自身的位置很了解。从而使得对单个数据进行操作比较简单。
链表则是牵一发而动全身,但是由于比较具有逻辑性,使用的时候比较有整体性。
4.分析调拭程序常见的问题及解决方案.
出现一些细节的变量名错误,这种问题会根据变量的差异程度决定发现问题的难度。如果是相似的变量,调试会极为困难。解决的方式是分段比较,输出中间数据,改变输入参数进行测试。并且可以通过return的值来判别程序在运行于第几个循环时停止,复盘当时的数据可以得到一些信息。
5.分析链队列与循环队列的优缺点.
链队列的逻辑较为复杂,通过直接架空head.next来删除数据,完全没有绝对位置,仅有相对于head的位置。
循环队列是在正整数域内挪动head的位置来删除数据,挪动tail的位置来增加数据,有明确的位置关系,逻辑也较为清晰。
6.第 18 天建立的两个队列, 其区别仅在于基础数据不同, 一个是 int, 一个是 char. 按这种思路, 对于不同的基础数据类型, 都需要重写一个类, 这样合理吗? 你想怎么样?
不太合理,如果能把数据类型单独写在一个方法中声明,就能更好的适应不同情况。