


这个问题我初学时也不理解,哈哈 ! 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);
   }                         
}