Java学习第20天:数据结构学习总结

1.面向对象与面向过程相比, 有哪些优势?

结构清晰,程序是模块化和结构化,更加符合人类的思维方式;易扩展,代码重用率高,可继承,可覆盖,可以设计出低耦合的系统;易维护,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活,更易于维护,系统低耦合的特点有利于减少程序的后期维护工作量。

2.比较线性表和链接的异同,分析线性表和链接的优缺点

线性表的空间是连续的 遍历是可以通过循环来进行遍历,一个线性表是n个具有相同特性的数据元素的有限序列,数组就是一个线性表;链性表是间断的 需要用指针来访问,如链表就是链式表.链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。节点:每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

顺序储存:

优点:在结点等长时可以随机存取,存储密度高节省存储空间,用结点的物理次序反映结点之间的逻辑关系

缺点:插入和删除结点时要移动大量的结点,必须静态分配连续空间

链接存储:优点:插入和删除比较灵活,不需要大量移动结点,动态分配空间比较灵活,不需要预先申请最大的连续空间

缺点:增加指针的空间开销,检索必须沿链进行,不能随机存取

3.分析调拭程序常见的问题及解决方案.

怎么说呢,在写程序或者调试程序的过程中最重要的一步就是理解程序中的算法,一个逻辑没有搞懂可能程序都直接看不懂,首先要理解数据结构中的相关概念,多借助丰富的网上资源,同时请教一些编程老手,这样上手才快才容易。最重要的是要学会融会贯通,在数组越界、空指针或者针对具体问题等,一定要做特别判断,做异常处理,才知道哪个地方出了错。

4.分析链队列与循环队列的优缺点

从时间上,其实它们的基本操作都是常数时间,即都为0(1)的,不过循环队列是事先申请好空间,使用期间不释放,而对于链队列,每次申请和释放结点也会存在一些时间开销,如果入队出队频繁,则两者还是有细微差异。对于空间上来说,循环队列必须有一个固定的长度,所以就有了存储元素个数和空间浪费的问题。而链队列不存在这个问题,尽管它需要一个指针域,会产生一些空间上的开销,但也可以接受。所以在空间上,链队列更加灵活。总的来说,在可以确定队列长度最大值的情况下,建议用循环队列,如果无法预估队列的长度时,则用链队列。

5.第 18 天建立的两个队列, 其区别仅在于基础数据不同, 一个是 int, 一个是 char. 按这种思路, 对于不同的基础数据类型, 都需要重写一个类, 这样合理吗? 你想怎么样?

这样的话太过于繁琐复杂了,建议建议一个统一的模板类,例如class list{}。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值