最近在学习链表,惊闻不能把链表手写出来就不能算是掌握了,我只好花功夫在理解+手写上。过程中犯了许多错误,简单记录一下,顺便加深一下印象,避免以后再犯同样的错误。
问题一:到底是p->next = p,还是p = p->next ?
对于我来说,这个问题极易搞混。我第一面默写时写成了前者,结果就翻车了——输出陷入了无限循环。
没办法,只好运用单步调试大法。找了好久才找到原因,也就是将题目中的两种描述搞混了。
这就是问题所在了。按上图的写法,相当于是将当前节点的指针域赋值为当前节点的地址,示意图如下:
查看节点地址,发现所有节点地址都和头节点一样,链表陷入了无穷循环。
将这个问题改正后,程序能正常运行。
问题二:pr和head的区别?
先看下面这段代码,这是错误情况: