摘要:
问题1: glibc中的strdup实现如下: 没有对参数s进行空指针判断。 我们的Exception.cpp中应做改进: 在第12行进行判断空指针操作。 问题2: t1在析构时会抛出异常,我们在remove一个对象时,要保证链表还是合法的,也就是保证异常安全性。 如上图,我们期望打印的链表长度为2 阅读全文
posted @ 2018-09-15 17:02
周伯通789
阅读(590)
评论(0)
推荐(0)
摘要:
对于自定义对象,我们可以重载普通new操作符,这时候使用new Test()时就会调用到我们重载的普通new操作符。 示例程序: 执行结果如下: 调用placement new,程序如下: 编译结果如下: 提示我们没有对应的函数,也就是placement new没有重载。 更改程序: 结果如下: 再 阅读全文
posted @ 2018-09-15 16:46
周伯通789
阅读(1292)
评论(0)
推荐(1)
摘要:
静态单链表是一种新的数据结构类型。 我们往线性表中添加的元素的个数是固定的,例如最大100个。 只是这100个元素会经常的变动。 这时候是顺序表还是单链表合适呢? 显然是单链表,但是单链表也有问题。 缺陷: 解决方案: 我们在顺序表的内部预留了空间,这片空间用来增加删除数据元素。配合单链表就形成了静 阅读全文
posted @ 2018-09-15 14:41
周伯通789
阅读(390)
评论(0)
推荐(0)
摘要:
问题: 如何遍历单链表中的每一个元素? 示例: 在头部插入元素时,时间复杂度是O(n)。 获取元素时,时间复杂度是O(n*n),因为内层定位位置时有一个O(n)复杂度。 从理论上来说遍历一个单链表,只需要线性的时间就够了。 设计思路: 提供一组相关的遍历函数,遍历时使用这些函数来操作: move函数 阅读全文
posted @ 2018-09-15 13:28
周伯通789
阅读(455)
评论(0)
推荐(0)
摘要:
问题: 如何判断某个数据元素是否存在于线性表中? 查找一个元素是否在线性表中,每次查找就需要使用for循环,因此,我们需要封装一个find成员函数。 在List.h中添加find函数: SeqList.h中添加find的实现: LinkList.h中添加find的实现: 测试程序如下: 运行结果: 阅读全文
posted @ 2018-09-15 11:36
周伯通789
阅读(239)
评论(0)
推荐(0)
摘要:
本节目标: 添加LinkList.h文件: 第110行的get是const函数,116行我们取m_header的指针,这时编译器会认为我们要改变m_header,编译会报错,因此,我们在第20行给m_header这个变量加上mutable属性。 测试程序如下: 运行结果如下: get函数的使用不是很 阅读全文
posted @ 2018-09-15 10:11
周伯通789
阅读(356)
评论(0)
推荐(0)
浙公网安备 33010602011771号