区别顺序表的清空和销毁两个操作
清空操作,把表中的元素清空,但已表结构依然存在于内存中,它的实现方法是:
Status ClearList_Sq(SqList &L)
{
L.length = 0;
return(OK);
}
因为插入、删除、查找等操作都会对参数有一个类似限制条件:if(i>L.length || i<1),这样就保证了在把length设为0后,其他操作就不能访问到原来的那些元素(实质上原来的元素还是在内存空间里的,如果直接用索引去访问,任然可以把元素读取出来的),那么就可以认为length=0的表是空表,此条件也就是判断表是否为空的唯一依据。
销毁操作,则是把表的整一个结构给消灭掉,把原来所占有的内存空间都给释放出来,它的实现是:
Status DestroyList_Sq(SqList &L)
{
//ifthis list is init then destroy it
if(L.elem){
free(L.elem);
L.elem= NULL;
L.length= 0;
L.listsize= 0;
}
//else return error_msg
else{
return(ERROR);
}
return(OK);
}