当前位置:   article > 正文

数据结构-C语言 || 线性表的总结_数据结构c语言线性表知识点总结

数据结构c语言线性表知识点总结

数据元素的结构——逻辑结构和物理结构

逻辑结构:数据元素之间的关系

物理结构:数据元素在计算机存储器中的位置 

目录

1.线性表

a) 线性表的顺序存储——顺序表

b) 线性表的链式存储——链表、循环链表、双向链表

▏▶ 何时选用顺序表,何时选用链表作为线性表的存储结构合适?

2.线性表的创建 

a) 顺序表的创建——初始化、查找、插入、删除 

 b) 双链表的创建——初始化、查找、插入、删除、删除重复元素 

 c) 单链表的创建——初始化、合并链表、逆序输出


1.线性表

定义:由n个数据元素组成的有限序列

特点:具有相同类型的数据元素,因此数组是线性表数据元素逻辑结构的体现。

分类:以数据元素的存储方式分为——线性表的顺序存储、线性表的链式存储

a) 线性表的顺序存储——顺序表

定义:用一组地址连续的存储单元依次存储线性表的数据元素

特点:数据的逻辑结构和物理结构一致,即数据元素之间的关系是以元素在计算机中“物理位置相邻”来体现的。

分类:动态顺序表、静态顺序表 (对应动态数组【使用realloc函数给数组扩容】、静态数组)

描述方式:一维数组

  1. typedef struct {
  2. ElemType* e; //存储空间的基地址
  3. Length len; //当前顺序表长度
  4. Length Listsize; //分配的存储容量——总长度
  5. }Sqlist;

b) 线性表的链式存储——链表、循环链表、双向链表

定义:用一组任意的存储单元存储线性表数据元素 

描述方式:指针

▎  链表

特点:①数据元素的逻辑结构和物理结构不一定一致;②在定义上,链表的定义包括数据元素的取值后继结点的指针定义(数据域和指针域)

分类:动态链表、静态链表

        ☞ 动态链表:大小不固定的存储(使用malloc函数随时分配内存的)

        ☞ 静态链表:大小固定的内存存储

  1. typedef struct Lnode{ //结点
  2. ElemType data; //数据域
  3. typedef struct* next; //后继指针域
  4. }Lnode;

▎  循环链表

特点:表中最后一个结点的指针域指向头结点(构成一个闭

分类:单循环链表、双向循环链表

  • 单:沿着一个方向找其他结点
  • 双:从结点的任意位置向任意方向都能找到其他结点

▎  双向链表

特点:有两个指针域,一个指向结点的直接前驱,一个指向结点的直接后继,具有双向性。

  1. typedef struct Lnode{ //结点
  2. ElemType data; //数据域
  3. typedef struct* next; //后继指针域
  4. typedef struct* prior; //前驱指针域
  5. }Lnode;

▏▶ 何时选用顺序表,何时选用链表作为线性表的存储结构合适?

      首先要明白顺序表和链表各自的特点——

顺序表:元素顺序存储,有一个连续的内存块来存储数据,则对顺序表按“位”访问快(对固定元素的随机存取很方便),而插入删除等大量元素移动操作慢

链表:元素链式存储,数据存储在任意内存单元,通过指针进行勾链串成一个线性表,则对链表插入删除等大量元素移动操作快(只需要改变插入删除位置两边结点指针的指向即可),而按“位”访问慢(对于元素的随机存取则需要遍历查找)。

综上所述

☞对于少量元素操作,随机存取、查找元素需求更多,修改次数多的时候 选择顺序表;

☞对于大量元素操作,增、改、删、查等操作进行较多的时候 选择链表。

2.线性表的创建 

a) 顺序表的创建——初始化、查找、插入、删除 

68948b7a5f9445d68ee9d63ce130c5f5.jpeg

具体实现方法、代码及时间/空间复杂度分析见

数据结构-C语言-线性表 || 顺序表的实现_◎菜澜子的博客-CSDN博客


  408b582c92a54dbb8740c138c8dd30b6.jpeg

 b) 双链表的创建——初始化、查找、插入、删除、删除重复元素 

插入 

8a2d15ce0eac45b089067008fe528449.png

 删除:

a89bc2354cec43122ee5ab29cbdcee03.png

 具体实现方法、代码及时间/空间复杂度分析见

数据结构-C语言-线性表 || 双向链表的实现_◎菜澜子的博客-CSDN博客


  c) 单链表的创建——初始化、合并链表、逆序输出

 初始化

2158526a881168a3089bf85a0280e5eb.png

删除

a7a7f07c600dd59a113a16d1f30cd000.png

具体实现方法、代码及时间/空间复杂度分析见 

数据结构-C语言-线性表 || 单链表的实现_◎菜澜子的博客-CSDN博客


总结于10.1~10.4 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/918855
推荐阅读
相关标签
  

闽ICP备14008679号