学习目录:
学习内容:
1.初始化
(1)定义:构造一个空的顺序表
(2)算法步骤:
- 为顺序表L动态分配一个预定义大小的数组空间,使elem指向这段空间的基地址
- 将表的当前长度设置为0
(3)算法描述:
Status InitList(SqList &L)
{
L.elem=new ElemType[MAXSIZE];
if(!L.elem) exit(OVERFLOW);
L.length=0;
return OK;
}
2.取值
(1)定义:根据指定的位置序号i,获取顺序表中第i个数据元素的值。由于顺序存储结构具有随机存取的特点,可以直接通过数组下标定位得到,elem[i-1]单元存储第i个数据元素。
(2)算法步骤:
- 判断指定的位置序号i值是否合理(1<=i<=L.length),若不合理,则返回ERROR。
- 若i值合理,则将第i个数据元素L.elem[i-1]赋给参数e,通过e返回第i个数据元素的传值。
(3)算法描述:
Status GetElem(SqList L,int i,ElemType &e)
{
if(i<1||i>L.length) return ERROR;
e=L.elem[i-1];
return OK;
}
3.查找
(1)定义:根据指定的元素值e,查找顺序表中第1个值与e相等的元素。若查找成功,则返回该元素在表中的位置序号;若查找失败,则返回0。
(2)算法步骤:
- 从第一个元素起,依次将其值和e相比较,若找到值与e相等的元素L.elem[i],则查找成功,返回该元素的序号i+1
- 若查遍整个顺序表都没有找到,则查找失败,返回0
(3)算法描述:
Status LocateElem(SqList L,ElemType e)
{
int i;
for(i=0;i<L.length;i++)
if(L.elem[i]==e) return i+1;
return 0;
}
4.插入
(1)定义:在表的第i个位置插入一个新的数据元素e,使长度为n的线性表变成长度为n+1的线性表。
(2)算法步骤:
- 判断插入位置是否合法(1<=i<=n+1),若不合法则返回ERROR。
- 判断顺序表的存储空间是否已满,