链表操作问题

C语言 码拜 7年前 (2015-11-12) 731次浏览
最近再看《C Primer plus》,在高级数据表示一章中有关于链表的一个问题:
//假如列表已满则返回真
bool list_is_full(const list *plist)
{
node *pt;
bool full;
pt = (node *)malloc(sizeof(node));
if(pt == NULL)
full = true;
else
full = false;
free(pt);
return full;
}
这里为何malloc返回NULL(分配不成功)就说明list已满?
解决方案:20分
这个表示堆空间已满,无法开辟新的空间来储存链表结点了。
解决方案:20分
线性表链式存储基本是不会出现表满情况的,除非结点多到计算机无法承受,不能再给一个新结点动态分配内存,就是堆满了。这个时候假如不判断链表能否为满然后做出处理的话,而是让他继续逼着分配内存,那就不是程序出错这么轻松了。应该会是计算机的崩溃。
和顺序线性表的表满判断还是有区别的。
这是本人个人的理解,并没有尝试过。假如有说的不对的地方希望高手指出,虚心学习。
解决方案:10分
malloc分配失败表示的是内存中已经无法获得满足你需要大小的连续空间了,链表结点通常不会发生

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明链表操作问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)