然后再编程中发现了这样的问題。
结果有两个问题第一个就是开头所讲的一旦有最后一段释放内存的代码,就会死循环(也就是不出现press any key to continue)如果注释掉释放内存的代碼,就正常
第二个pos==1,2……(不超过节点数)都正常的,但是pos==0的时候就没有实现在表头插入
可选中1个或多个下面的关键词,搜索相关資料也可直接点“搜索资料”搜索整个问题。
C语言 写一个函数insert,用来向一个动态链表插入结点
然后再编程中发现了这样的问題。
结果有两个问题第一个就是开头所讲的一旦有最后一段释放内存的代码,就会死循环(也就是不出现press any key to continue)如果注释掉释放内存的代碼,就正常
可选中1个或多个下面的关键词,搜索相关資料也可直接点“搜索资料”搜索整个问题。
清除链表是需要两根指针前后走的可以看成是一个“过河拆桥”的过程
1)首先让两个指針p,q指向链表头;
2)然后让p指向q的next;
3)free掉q所指向的节点;
5)判断p是否为空,如果空结束循环,否则转2)
这样清除内存确实可以,但是为什么C Prime会那么写
毕竟C prime plus 是很经典的教材,而且国外的的教程错误很少的难道是它真的写错了?
书上也不完全错准确地说,这样写不好┅个指针被free之后,只是标记它所指向的内存可以再分配并没有清空这个指针里面的数据。也就是说该指针还是可以被访问的,但是有佷大的危险性因为那时该内存是未定义的。所以一般的做法是free一个指针然后将其置为NULL。
使用循环一个一个结点free掉别想着贪方便直接free頭结点就完事