假设线性表中元素为(a1,a2,.,an,设第一个 元素a的内存地址为LOC(a),而每个元素在计算机内占- k个存贮单元,则第i个元素a的地址为 L0C(a)=L0c(a,)+(i-1)×k (其中1≤i≤n)
假设线性表中元素为(a1,a2,….,an),设第一个 元素a1的内存地址为LOC(a1 ) ,而每个元素在计算机内占 k个存贮单元,则第i个元素ai的地址为 LOC(ai )=LOC(a1 )+(i-1)×k (其中1≤i≤n)
存储地址 内存排列 数组下标 b al b+k a b+(i-1)Xk a … an n b+(n-1)×k MAXSIZE-1
存储地址 内存排列 数组下标 a1 a2 … ai … an … 0 1 2 i-1… n-1… … MAXSIZE-1 b b+k … b+(i-1)×k … b+(n-1)×k
顺序表的特征: 逻辑上相邻的数据元素物理位置也相邻; 只要确定了线性表的起始存储位置,线性表中的任意元 素都可以随机存取,所以线性表的顺序存储结构是一种随 机存取的存储结构: 表示:#define MAXSIZE1000 typedef struct ElemType data[MAXSIZE]; int last; }SeqList;
顺序表的特征: 逻辑上相邻的数据元素物理位置也相邻; 只要确定了线性表的起始存储位置,线性表中的任意元 素都可以随机存取,所以线性表的顺序存储结构是一种随 机存取的存储结构; 表示: #define MAXSIZE 1000 typedef struct { ElemType data[MAXSIZE]; int last; }SeqList;
2.2.2顺序表运算 1.插入运算Insert(L,i,x) 确定i值是否合法;(1≤i≤n+1) 判断是否发生上溢: 从a到a逆向后移每一个元素; 里线性表长度增1
2.2.2 顺序表运算 1.插入运算 Insert (L , i, x ) 确定i值是否合法;(1≤i≤n+1) 判断是否发生上溢; 从an到ai逆向后移每一个元素; 线性表长度增1
序号 内容 序号 内容 0 a 0 a 02 a a; 2 a3 a4 3 a4 a++l ai a+2 ai+l n- an an ,+ maxsize-l maxsize-l 插入前 插入后
0 1 2 3 … i-1 i i+1 … n … maxsize-1 a1 a2 a3 a4 x ai ai+1 … an … 0 1 2 3 … i-1 i i+1 … n-1 … maxsize-1 a1 a2 a3 a4 … ai ai+1 ai+2 … an … 序号 内容 序号 内容 插入前 插入后