首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

线性表解决方案

2013-03-20 
线性表为什么顺序表置空只需将表长赋值为零,不需其他操作?而链表需要把每个节点都释放,为什么?[解决办法]

线性表
为什么顺序表置空只需将表长赋值为零,不需其他操作?
而链表需要把每个节点都释放,为什么?
[解决办法]
顺序表是内存连续,是一整块内存,可以保留内存而不释放
链表一般是内存不连续,删除一个节点,就需释放内存,不然就泄露
[解决办法]
如果是从堆中malloc出来的,都需要释放.
如果是在栈上分配的空间,不需要释放.

顺序表和链表只是两种不同的数据结构.至于实现方式可以自己选择.
你完全可以在堆中实现顺序表,在栈中实现链表.

所以,如果顺序表是在堆中malloc出来的,那么仅仅把表的长度置零是不够的,还需要free
同理,如果你的链表是在栈中实现的,那么不需要free.

[解决办法]
目前为止:我仅同意二楼分析
[解决办法]
顺序表是一块连续的内存,当表长为0时,内存就会标记后面的内存为可用,所以可以不释放。

而链表是不连续的内存空间,前一个数据会标记下一个数据的内存地址,
如不释放空间,只清除第一个数据则后面的数据还存在而且还占用着内存而无法被其他程序或数据使用变成了无法使用也无法调用的垃圾数据,当这种数据过多而占用大量内存便会导致内存空间不够。
[解决办法]

引用:
引用:如果是从堆中malloc出来的,都需要释放.
如果是在栈上分配的空间,不需要释放.

顺序表和链表只是两种不同的数据结构.至于实现方式可以自己选择.
你完全可以在堆中实现顺序表,在栈中实现链表.

所以,如果顺序表是在堆中malloc出来的,那么仅仅把表的长度置零是不够的,还需要free
同理,如果你的链表是在栈中实现的,……


malloc这种函数分配空间的都在堆上,还有一种静态的变量分配在静态存储区,其它的就是栈上了

热点排行