考研-数据结构3-线性表的定义和基本操作

线性表的逻辑结构

线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列
考研-数据结构3-线性表的定义和基本操作_第1张图片
除第一个元素外,每个元素有且仅有一个直接前驱,除最后一个元素外,每个元素有且仅有一个直接后继。

线性表的顺序存储

线性表的顺序存储是用一组地址连续的存储单元(c中的数组),依次存储线性表中的数据元素,顺序存储的线性表也叫顺序表
考研-数据结构3-线性表的定义和基本操作_第2张图片

顺序表需要的三个部分
1.存储空间的起始位置
2.顺序表最大存储容量
3.顺序表当前的长度

#define MaxSize 50 
typedef int Elemtype
typedef struct{
  ElemType data[MaxSize];
  int length ; 
}SqList;
//大小是固定的

动态建表

typedef int Elemtype
typedef struct{
  ElemType *data;
  int length ;
  int MaxSize ;  
}SqList;

#define InitSize 100
SqList L ; 
L.data = (ElemType)malloc(sizeof(ElemType) * InitSize)

动态分配并不是链式存储,同样还是属于顺序存储结构,只是分配的空间大小可以在运行时决定。
考研-数据结构3-线性表的定义和基本操作_第3张图片

顺序表的操作

1.插入
考研-数据结构3-线性表的定义和基本操作_第4张图片
性能
考研-数据结构3-线性表的定义和基本操作_第5张图片
2.删除
考研-数据结构3-线性表的定义和基本操作_第6张图片
性能
考研-数据结构3-线性表的定义和基本操作_第7张图片

总结

优点:
存储密度大,不需要为表中元素之间的逻辑关系增加额外存储空间。
随机存取:可以快速存储表中任一位置的元素
缺点:
出入和删除操作需要移动大量元素
对存储空间要求高,会产生存储空间的“碎片”

你可能感兴趣的:(算法-数据结构)