考研系列-数据结构第二章、线性表

2024-06-13 1798阅读

目录

一、线性表的基本概念

1.定义

2.线性表的一些操作

(1).基本操作(增删改查)

(2).线性表其他常用操作

(3)在定义这些操作时的注意事项

3.重要考点总结

4.易错题总结

二、顺序表

1.顺序表定义

2.顺序表实现方式

3.顺序表元素的插入和删除

(1)插入元素

(2)删除元素

4.顺序表查找

(1)按数组下标查找

(2)按元素值查找

5.易错题总结

(1)选择题

(2)简答题

三、链表

1.单链表

(1)单链表的结构体定义

(2)插入元素

①带头结点插入

②不带头结点插入

(3)删除元素

①按位序删除

②指定结点删除

(4)查找元素

①按位查找

②按值查找

③遍历链表求链表长度

(5)根据给定元素创建单链表

①头插法

②尾插法

③总结

2.双链表

(1)初始化

(2)插入元素

(3)删除元素

(4)遍历

3.循环链表

4.静态链表

四、顺序表和链表对比

1.对比角度

(1)逻辑结构

(2)存储结构

(3)基本操作

(4)选用场景

2.总结

五、易错题总结

1.选择题

2.简答题

六、本章归纳总结

七、参考


一、线性表的基本概念

1.定义

考研系列-数据结构第二章、线性表

这里线性表是指的逻辑结构,它可以使用顺序存储也可以使用链式存储,和物理结构区分开。

2.线性表的一些操作

这些操作是数据结构中线性表的基础,掌握它们对于理解和应用线性表至关重要。

(1).基本操作(增删改查)

初始化表 (InitList(&L)) :这个操作用于构造一个空的线性表L,并为其分配必要的内存空间。这是从无到有的过程,为后续的操作提供一个空的框架。

销毁操作 (DestroyList(&L)) :这个操作用于销毁线性表,并释放线性表L所占用的内存空间。这是从有到无的过程,确保内存的有效管理和释放。

插入操作 (ListInsert(&L, i, e)) :在表L中的第i个位置上插入指定的元素e。这个操作实现了线性表的“增”功能,可以根据需要在任意位置添加元素。

删除操作 (ListDelete(&L, i, &e)) :删除表L中第i个位置的元素,并通过参数e返回被删除元素的值。这个操作实现了线性表的“删”功能,可以根据需要移除元素。

按值查找操作 (LocateElem(L, e))):在表L中查找具有给定关键字值的元素。这个操作用于检索特定值的元素,实现“查”的功能。

按位查找操作 (GetElem(L, i)) :获取表L中第i个位置的元素的值。这也是“查”功能的一种,通过位置索引来获取元素。

(2).线性表其他常用操作

求表长 (Length(L)) :返回线性表L的长度,即L中数据元素的个数。

输出操作 (PrintList(L)) :按前后顺序输出线性表L的所有元素值。

判空操作 (Empty(L)) :判断线性表L是否为空,若为空则返回true,否则返回false。

(3)在定义这些操作时的注意事项

命名要有可读性:函数名和参数应该具有明确的含义,方便理解和使用。

参数传递:在某些情况下,如需要修改参数的值并返回到调用者时,需要使用引用(如C/C++中的&)来传递参数。

3.重要考点总结

考研系列-数据结构第二章、线性表

4.易错题总结

问题:

        02. 以下(        )是一个线性表。

        A.由"个实数组成的集合                 B.由100个字符组成的序列

        C.所有整数组成的序列                  D.邻接表

解答:

        02. B

        线性表定义的要求为:相同数据类型、有限序列。选项C的元素个数是无穷个,错误;选项A集合中的元素没有前后驱关系,错误;选项D属于存储结构,线性表是一种逻辑结构,不要将二者混为一谈。只有选项B符合线性表定义的要求。

二、顺序表

        顺序表就是一种顺序表示的线性表,形式上就是我们常说的数组。

        在考察顺序表时,其实就是对数组的操作(数据结构的选择题和算法大题常考察),在本章中我们着重对选择题的知识点进行总结,算法大题常考查的是查找和排序,这部分后面会有专题总结。

        ※选择题知识点主要是掌握顺序表的基本操作:初始化、增、删、改、查。

        👇🏻👇🏻👇🏻顺序表基本操作C++代码实现可以参考下面文章👇🏻👇🏻👇🏻:
顺序表相关代码-CSDN博客文章浏览阅读20次。【代码】顺序表相关代码。考研系列-数据结构第二章、线性表https://blog.csdn.net/hehe_soft_engineer/article/details/134235748

1.顺序表定义

考研系列-数据结构第二章、线性表

考研系列-数据结构第二章、线性表

2.顺序表实现方式

//顺序表静态分配结构体定义
typedef struct{
    int data[InitSize];
    int length;
}SeqListStatic;
 
//顺序表动态分配结构体定义
typedef struct{
    int *data;
    int MaxSize;
    int length;
}SeqList;

考研系列-数据结构第二章、线性表

考研系列-数据结构第二章、线性表

考研系列-数据结构第二章、线性表

考研系列-数据结构第二章、线性表

3.顺序表元素的插入和删除

(1)插入元素

//顺序表的插入元素,在第i个位置处插入元素elem
//平均时间复杂度O(n)
bool InsertElem(SeqList &L,int i,int &elem){
    if(iL.length+1){
        return false;
    }
    if(L.length==L.MaxSize){//顺序表满
        return false;
    }
    for(int j=L.length;j>=i;j--){//从最后一个元素开始
        L.data[j]=L.data[j-1];//元素后移,直到第i个位置
    }
    L.data[i-1]=elem;
    L.length++;//不要忘记修改顺序表的长度
    
    return true;
}

考研系列-数据结构第二章、线性表

(2)删除元素

删除第i个位置的元素,i+1以后的所有元素前移动一位,注意从i+1位置开始往前移动。

//顺序表删除元素,删除第i个位置元素
//平均时间复杂度O(n)
bool deletElem(SeqList &L,int i,int &deletedelem){
    if(iL.length){
        return false;
    }
    deletedelem=L.data[i-1];
    for(int j=i-1;j
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]