线性表的顺序表示:
1, 线性表的顺序存储表示:
用一组地址连续的存储单元依次存储线性表的数据元素,这种存储结构通常称为顺序表,
特点是逻辑上的相邻元素在其物理次序也是相邻的。
线性表的顺序存储结构是一种 随机存取 的存储结构。
l 为线性表每个元素占用的存储单元个数
ai 的存储位置可以表示为:LOC(ai)=LOC(a1)+(i-1)*l;
//顺序表的存储结构
#define MAXSIZE 100
typedef struct{
ElemType *elem; //存储空间的基地址
Int length; //当前长度,可获取表长,判断表是否为空
}SqList
2, 顺序表的基本操作
a, 初始化:
为顺序表动态分配一个预定义大小的数组空间,使 elem 指向这段空间的基地址。
将表的当前长度设为 0
b, 查找:
根据给定元素序号查找:查找表中第 i 个数据元素,返回数组中第 i-1 个数据元素的值
根据给定值查找:查到第 i 个元素与给定值匹配,返回该元素的位序 i+1
c, 插入:
在第 i 个元素之前插入一个元素,需从最后一个元素即第 n 个元素开始,依次向后
移动一个位置,直至第 i 个元素(共 n-i+1 个元素)
d, 删除:
删除第 i 个元素,需从第 i+1 个元素开始直至第 n 个元素,依次前移一个位置
线性表的链式表示实现:(线性链表,单链表)
1, 线性表的链式存储结构:
用一组任意的存储单元存储线性表的数据元素(这里存储单元可以是连续的,也可
以是不连续的)
数据元素 ai 的存储映像,为结点 node,其包含两个域:数据域和指针域
//单链表的存储结构
typedef struct LNode{
ElemType data; //结点的数据域
Struct LNode *next; //结点的指针域
}LNode,*LinkList; //LinkList 为指向结构体 LNode 的指针类型
2, 单链表的基本操作:
a, 初始化:
//构造一个空的单链表 L
Int initlist_L(LinkList &L)
{
L=new LNode; //生成新结点作为头结点,用头指针指向头结
点
L->next=NULL; //头结点的指针域为空,链表为空