{
L->length=0;
}
//线性表的清空即将表长度置为零。
//判空即判断顺序表长度是否为0。
//顺序表元素个数即L->length。
List * CreateList(int len)
{
List*L=(List*)malloc(sizeof(List));//申请顺序表空间
L->length=0;//初始长度为0,无元素存在,即空表。
L->capacity=len;//最大容纳量。
L->Array=(ElemType*)malloc(len*sizeof(List));为数组元素申请空间。
return L;
}
//创建一个顺序表。
完成ElemType* GetElem(List *L,int k)函数,获得顺序表中第k个元素(从0开始计数)的数据指针,如果k不在范围内,则返回空指针。
ElemType* GetElem(List *L,int k)
{
if(k<0||k>(L->length-1))///判断k是否在范围之内
{
return NULL;
}
else{
return &(L->Array[k]);//返回数据指针
}
}
完成void insertElem(List *L,int k,ElemType e)函数,在顺序表中第k个位置(从0开始计数)插入数据e,如果k不在范围内,则什么都不做。如果顺序表已满,则把顺序表空间扩展为现有空间的2倍后再插入。
void insertElem(List *L,int k,ElemType e)
{
if(0>k||L->length<k);//k不在范围之内
if(L->length==L->capacity)
{
L->Array=(ElemType*)realloc(L->Array,2*L->capacity*sizeof(ElemType));
if(NULL==L->Array);
else
L->capacity*=2; //扩展空间为原来的两倍;
}
for(int i=L->length;i>k;--i)
L->Array[i]=L->Array[i-1];//k之后的元素不断后移
L->Array[k]=e;
L->length++;
}
完成void deleteElem(List *L,int k);函数,删除顺序表中第k个元素(从0开始计数),如果k不在范围内,则什么也不做。
void deleteElem(List *L,int k)
{
int i;
if(k<0||k>(L->length-1))
{
return;
}
else{
for(i=k;i<=L->length-1;i++)
{
L->Array[i]=L->Array[i+1];
}
L->length--;
}
}