这个问题我初学时也不理解,哈哈 ! s->next=r->next; r->next=s; r=s; ------------(1)
是一个指针插入语句,具体来说应该是倒插法建链表。
s是一个节点,它指向一个数据区,那个数据区有包括data域和next域。从链表结构定义可见next是由本身指针定义的,是一个嵌套。
而指针是存地址的。由此可见先让s->next里面存r->next是一个为下次再存下个节点打基础的一步,而r->next=s;是把新分配的结点
s连接到r的后面,而r=s;则是为以后再用变量r方便做准备。
return H; --------------------(2)
是返回构造好的链表。
你还可以用这样的方式:
void Creat_LinkList(LinkList &H)
{
LinkList H=(LinkList)malloc(sizeof(LNode));
H->next=NULL;
LNode *s,*r=H;
int x;
scanf("%d",&x);
while(x!=-1)
{
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
s->next=r->next; r->next=s; r=s; ------------(1)
scanf("%d",&x);
}
}