怎么理解c语言链表的这两个语句,r->next=p;r=p;

Python012

怎么理解c语言链表的这两个语句,r->next=p;r=p;,第1张

r->next=p——让指针r指向的结点的下一个结点的指针等于指针p。

r=p——将p赋给r。

虽然看不到上下文,但大致意思是执行这两后,就将p指向的链表接在了r指向的结点后,并r的指向向后移动了一个结点……供参考。

本来 r 为 尾指针

要在末尾插入一个新结点, 就需要

r->next=s//将新结点插到*r之后, 原来的尾结点r的next 记录新结点的地址

r=s//新结点变成当前的表尾

r是之前定义的一个指针,并不是就没再用了, 而是一开始链表中没有结点的时候,r = NULL.

当链表中有了结点以后, 就用到 r 了

?是C语言中的三元运算符,格式如下:

(逻辑表达式1)?表达式2:表达式3;

当逻辑表达式1为真时,整个三元运算表达式返回表达式2的结果,否则返回表达式3的结果。

如下代码

r->next =p ?p:q

?前应该是一个逻辑表达式,这里的p可以视为if(p)

即结构指针p不为NULL时,返回p所保存的指针,否则返回q保存的指针。