在数据结构中,线性结构可以说是一种非常重要的结构,因此我们要熟练掌握对线性表的一般操作。
顺序表
顺序表是一种类似于数组的数据结构,其特点就是逻辑上相邻的数据,其物理次序也是相邻的。
- 初始化**
顺序表的初始化就是构造一个空的顺序表。
1.为顺序表分配一个预定大小的数组空间,使elem指向这段空间的基地址(首地址)
2.将当前表长设为0
Status InitList (SqList & L)
{
L.elem= (ElemType*)malooc(sizeof (ElemType)*MAXSIZE);
if(!L.elem)
return ERROR;
L.maxsize=MAXSIZE;//最大长度
L.length=0;//当前长度
return OK;
}
- 从表中取值
1.判定指定序号i是否合理(1<=i<=L.length)
2.若合理,则将第i个元素L.elem[i-1]赋值给e
Status GetElem(SqList L,int i,ElemType &e)
{
if(i<1 || i>L.length)//判断第i个元素的合理性
return ERROR;
e=L.elem[i-1];
return OK
}
- 插入
- 判断插入位置是否合理(1<=i<=n+1)
- 判断分配的空间是否已满
- 将第i到第n个元素依次向后移,空出第i个位置
- 将要插入的元素e插入到第i处
- 表长加1
Status ListInsert(SqList &L,int i ,ElemType e)
{
if(i<1 || i>L.lengh+1)return ERROR;
if(L.length==MAXSIZE)return ERROR;
for(int j=L.length-1;j>=i-1;j--)//将第i到n个元素向后移动一个单位,空出第i个位置
L.elem[j+1]=L.elem[j];
L.elem[i-1]=e;//将e插入到i处
L.length++;
return OK;
}