【数据结构】-线性表

1、基础概念:

线性表:

  • 是一种线性结构,由n个数据元素组成的有穷序列,数据元素又称结点;

这里写图片描述

特征:

  • 结点具有一对一的关系;
  • 如果节点数不为零,每个结点有且仅有一个直接前驱–(起始结点没有直接前驱除外);
  • 节点数不为零,每个结点有且仅有一个直接后继–(终端节点没有直接后继除外);

这里写图片描述
2、基本运算实现:

  • 初始化Initiate(L):建立一个空表L=();L中不含数据元素;
  • 插入Insert(L,x,i):在线性表L的第i个数据元素之后插入一个值为x的新数据元素,插入后表长度+1,该插入元素之后的元素的下标+1,其中(1≤i≤n+1);
  • 删除Delete(L,i):删除线性表L中的第i个数据元素ai,其中i(1≤i≤n),删除后表长度-1;删除该元素时,该元素之后的元素的下标-1;
  • 求表长Length(L):返回线性表的长度;
  • 读表元素Get(L,i):返回线性表的第i个元素,当i不满足1≤i≤Length(L)时,返回特殊值;
  • 定位Locate(L,X):查找线性表中数据元素值等于x的结点序列,若有多个数据元素值与x相等,运算结果为这些结点中序号的最小值,若找不到该结点,则运算结果为0;

其中初始化,插入,删除和查找四种为常用基本运算;

3、链表图示:

这里写图片描述

  • 头结点:

这里写图片描述

  • 设置头结点好处:

对链表操作时,可以对空表,非空表的情况以及对首元结点进行统一处理,变成更方便

4、顺序实现与链式实现比较

比较 顺序实现 链式实现
查找 随机存取,时间复杂度O(I) 对元素扫描,时间复杂度O(n)
定位 时间复杂度为O(n) 时间复杂度为O(n)
插入、删除 元素比较,结点移动时间,时间复杂度为O(n) 元素比较,结点不移动,时间复杂度为O(n)
整体 预分配存储空间 不需预分配存储空间

猜你喜欢

转载自blog.csdn.net/qiqibei666/article/details/81175099