区别顺序表的清空和销毁两个操作
2013-06-07 22:48
288 查看
区别顺序表的清空和销毁两个操作
清空操作,把表中的元素清空,但已表结构依然存在于内存中,它的实现方法是:
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);
}
清空操作,把表中的元素清空,但已表结构依然存在于内存中,它的实现方法是:
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);
}
相关文章推荐
- 顺序循环队列基本操作(入队,出队,清空,销毁,历遍)
- [数据结构]c语言实现顺序栈的入栈,出栈,清空,销毁等操作
- Fragment销毁时replace和add两个方法的区别
- 顺序栈的初始化,进栈、出栈、求长、判空、访顶、遍历、清空、销毁
- [数据结构]c语言实现链栈的入栈,出栈,清空,销毁等操作
- 清空数组:ZeroMemory、memset 和 “={0}” 三者用于清零操作的区别
- 链表操作:按值的顺序从小到大, 合并两个链表
- Fragment销毁时replace和add两个方法的区别
- 数组表示的线性表(顺序表)的基本操作,以及合并两个非递减数组线性表
- Fragment销毁时replace和add两个方法的区别
- 对顺序表的两个操作
- 【数据结构】用C语言实现顺序表的各种操作(包括头删,尾删,插入,逆序,摧毁,清空等等)
- c之队列相关操作------初始化,入队,出队,队列清空,销毁,遍历
- Fragment销毁时replace和add两个方法的区别
- 线性表的清空与线性表的销毁有什么区别 静态链表与数组的区别
- Fragment销毁时replace和add两个方法的区别
- Fragment销毁时replace和add两个方法的区别
- 在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法。两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点。 $().each,对于这个方法,在
- opengl红宝书关于name stack操作两个函数glLoadName,glPushName的用法区别
- 两个顺序线性表的合并,关于数组指针的操作。