复杂的线性表操作:
如两个线性表集合A和B的并集操作。即要使的集合A=AUB。说白了,就是把集合B中并不存在A中的数据元素插入到A中即可。
La表示集合A,Lb表示集合B。
Void union(List*La, List Lb)
{
Int La_len, Lb_len, I;
ElemType e;
La_len = ListLength(La);
Lb_len = ListLength(Lb);
For(i=1; i<=Lb_len; i++)
\ {
GetElem(Lb, I,e);
If(!LocateElem(La, e,equal))
ListInsert(La, ++La_Len, e);
}
}
复杂的个性化操作,其实就是把基本操作组合起来实现。
顺序存储定义
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
#define MAXSIZE 20 /*存储空间初始化分配量*/
Typedef intElemType; /*ElemType类型根据实际情况而定,这里假设为int*/
Typedef struct
{
ElemType data[MAXSIZE]; /*数据存储数据元素,最大值为MAXSIZE*/
Int length; /*线性表当前长度*/
}SqList;
顺序存储结构需要三个属性:
1. 存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置;
2. 线性表的最大存储容量:数组长度MaxSize;
3. 线性表的当前长度:length