花开堪折直须折,莫待无花空折枝。|

lgc202

园龄:8年10个月粉丝:61关注:12

第十八课、顺序存储链表的分析

1、效率分析

2、长度相同的的两个SeqList,插入和删除操作平均耗时并不相同

原因:如插入操作

假设一个顺序表里面的元素为int型,一个为string,插入过程中涉及到元素的拷贝,字符串的拷贝过程比int型的拷贝过程耗时

3、以下代码是否正确?

答案是否定的,两个指针指向了同一片内存,意味着析构时同一片空间被释放了两次

4、以下代码是否正确?

原因与上题类似:

DynamicList是在堆空间分配内存的,故指向了同一片内存,修改d1和d2会互相影响。且此函数结束时会对同一片空间释放两次。

因此,对于容器类型的类,可以考虑禁用拷贝构造和赋值操作

5、以下代码是否正确

答案依然是否定的:线性表必须先插入元素,才能使用数组操作符

顺序存储结构线性表提供了数组操作符重载。通过重载能够快捷方便获取目标位置的元素,在具体的使用形式上类似于数组,但由于本质不是数组,不能用线性表代替数组。

故需开发自己的数组类

6、小结

(1)、顺序存储线性表的插入和删除操作存在重大效率隐患

(2)、顺序线性表作为容器类,应该避免使用赋值操作符和拷贝构造

(3)、顺序存储线性表可能被误当做数组

(4)、工程开发中可以考虑使用数组类代替原生数组

 

本文作者:lgc202

本文链接:https://www.cnblogs.com/gui-lin/p/7485540.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   lgc202  阅读(12)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示