数据结构 笔记:顺序表和单链表的对比分析

如何判断某个数据元素是否存在于线性表中?

find

-可以为线性表(List)增加一个查找操作

-int find(const T& e)const;

·参数:

~待查找的数据元素

·返回值:

~>= 0:数据元素在线性表中第一次出现的位置

~-1:数据元素不存在

数据元素查找示例

LinkList<int> list;

for(int i=0;i<5;i++)
{
    list.insert(0,i);
}

cout << list.find(3) << endl;

顺序表的整体时间复杂度比单链表要底,那么单链表还有使用价值吗?

效率的深度分析

-实际工程开发中,时间复杂度只是效率的一个参考指标

·对于内置基础类型,顺序表和单链表的效率不相上下

·对于自定义类类型,顺序表在效率上低于单链表

-插入和删除

·顺序表:设计大量数据对象的复制操作

·单链表:只涉及指针操作,效率与数据对象无关

-数据访问

·顺序表:随机访问,可直接定位数据对象

·单链表:顺序访问,顺序从头访问数据对象,无法直接定位

工程开发中的选择

-顺序表

·数据元素的类型相对简单,不涉及深拷贝

·数据元素相对稳定,访问操作远多于插入和删除操作

-单链表

·数据元素的类型相对复杂,复制操作相对耗时

·数据元素不稳定,需要经常插入和删除,访问操作较少

总结:

-线性表中元素的查找依赖于相等比较操作符(==)

-顺序表适用于访问需求量较大的场合(随机访问)

-单链表适用于数据元素频繁插入删除的场合(顺序访问)

-当数据类型相对简单时,顺序表和单链表的效率不相上下

猜你喜欢

转载自blog.csdn.net/qq_29962483/article/details/83095521