23_顺序表和单链表的对比分析

作者: 编程半岛 | 来源:发表于2018-01-25 12:23 被阅读8次

关键词:List中的find函数、顺序表使用条件、单链表使用条件

1. 补充: 线性表中的find操作

List.h中增加一个查找操作

virtual int find(const T& e) const =0;
参数e: 待查找的数据元素
返回值:
>=0: 数据元素在线性表中第一次出现的位置
-1: 数据元素不存在

SeqList.h中实现

    int find(const T& e) const
    {
        int ret = -1;

        for(int i=0; i<m_length; i++)
        {
            if( m_array[i] == e)
            {
                ret = i;
                break;
            }
        }

        return ret;
    }

LinkList.h中实现

    int find(const T& e) const
    {
        int ret = -1;
        int i = 0;
        Node* node = m_header.next;

        while( node )
        {
            if( node->value == e )
            {
                ret = i;
                break;
            }
            else
            {
                node = node->next;
                i++;
            }
        }

        return ret;
    }

当插入的为类类型时,需要将类类型继承自Object

2. 顺序表和单链表时间复杂度对比分析

3. 问题:顺序表的整体时间复杂度比单链表要低,那么单链表还是有使用价值吗?

效率的深度分析:
1) 实际工程开发中,时间复杂度只是效率的一个参考指标
对于内置基础类型,顺序表和单链表的效率不相上下
对于自定义类类型顺序表在效率上低于单链表
2) 插入和删除:
顺序表:涉及大量数据对象的复制操作,因此对于自定义的复杂类类型插入和删除操作效率低
单链表:只涉及指针操作,效率与数据对象无关
3) 数据访问:
顺序表:随机访问,可直接定位数据对象
单链表:顺序访问,必须从头访问数据对象,无法直接定位
4) 工程开发中的选择:
顺序表
数据元素的类型相对简单,不涉及深拷贝;
数据元素相对稳定,访问操作远多于插入和删除操作
单链表
数据元素的类型相对复杂,复制操作相对耗时的类型
数据元素不稳定,需要经常插入和删除,访问操作较少

4. 小结

  • 线性表中元素的查找依赖于相等比较操作符(==)
  • 顺序表适用于访问需求量较大的场合(随机访问)
  • 单链表适用于数据元素频繁插入删除的场合(顺序访问)
  • 当数据类型相对简单时,顺序表和单链表的效率不相上下

声明:此文章仅是本人在学习狄泰学院《数据结构实战开发教程》所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4

相关文章

  • 23_顺序表和单链表的对比分析

    关键词:List中的find函数、顺序表使用条件、单链表使用条件 1. 补充: 线性表中的find操作 在List...

  • 单链表的实现

    关于单链表single-link-list.jpg 代码实现 链表和顺序表的对比对比.jpg

  • 线性表之顺序表和链表(单/双链表,单/双循环链表)

    线性表按存储方式分为顺序表和链表两种,其中链表又分为单链表,循环链表,双链表,双向循环链表。 顺序表 顺序表采用顺...

  • 线性表总结

    线性表总结 顺序表和链表的定义 链表的结构解析 顺序表类型定义 例 单链表的存储结构定义 例 链表的结构解析 单链...

  • 数据结构错题收录(一)

    1、以下属于逻辑结构的是() A:顺序表 B:哈希表 C:有序表 D:单链表 解析 顺序表、哈希表和单链表是三种不...

  • 顺序表与单链表

    接口 顺序表(线性表)实现方式 单链表的节点 单链表的实现

  • 数据与算法结构

    线性表 顺序表 链表(物理上离散,逻辑上连续) 链表的类别 单链表 循环链表 双链表 链表的操作 顺序表与链表的比...

  • 线性表

    1.线性表 1.1 顺序表(顺序存储) 静态分配 动态分配 1.2 单链表 单链表定义 不带头节点的单链表插入操作...

  • 线性表之 链表

      上节分析了顺序表,这次我们分析一下链表,并简单手写一个单链表.   顺序表的特征上一节已经讲过:尾插效率高,支...

  • 顺序表与单链表的对比

网友评论

    本文标题:23_顺序表和单链表的对比分析

    本文链接:https://www.haomeiwen.com/subject/kcimaxtx.html