L->next有两层含义,可以表示L的后继节点指针,又可表示L的指针域,(补充:链表每个节点分为数据域和指针域,(单链表的指针域只有后继指针域,双链表的指针域分为前趋指针域和后继指针域))。第一,当它在等号右边时(即X = L->next形式)一般是指将X指针指向头节点L的后一个节点也就是链...
L->next=NULL 是L的值只是一个空指针地址
while(p!=L)就是检查L->next!=L,也就是检查是不是死循环的链表结构,自己的下一个是不是自己?
L的本质为指向链表头结点的指针,p=L即把L这个指针本身的地址赋给了p指针的地址,也就是说p指针和L指针现在是一模一样的指针。p==L一般用于判断语句: if(p==L),在上面p=L赋值后,p==L成立,这个语句的结果为真(true)。
P,Q,L,S,P->next都是指向结点的指针类型。Q=P, 是将P的值赋值给Q,也就是P和Q指向同一个结点。P=L,是将L的值复制给P,也就是P和L指向同一条链表。Q=P->next;按照上边给出的P结点,则Q就是空指针。
LNode是定义头结点的意思,而*PNode,*Linklist是定义个指针指向头结点。
按照语义来解释,这个函数的功能是修改链表的意思 然后看它三个参数,可以猜想这个函数的功能是在L链表中,修改第i个元素的数据 &L,取链表首地址,通过指针不断指向next指针来找到第i个元素 const elemtype &item,表示修改第i个元素的数值,因为是函数传递修改,所以必须用到地址才能改变链表中第i个...
这样就不是仅仅“允许”用来替代,而是只能使用了。即:不允许struct LNode x这样定义变量了,必须是LNode x这样了。怪我没有说清楚