大家帮忙看一下这个头结点,小弟我的头都想爆了!

大家帮忙看一下这个头结点,我的头都想爆了!!!
typedef struct LNode{
  char data;
  struct LNode *next;
}LNode,*LinkList;
LinkList CreateListR()//初始化
 {LinkList L;
  char ch;
  LinkList p,r; 
  L=new LNode;//申请头结点空间
  if(!L) exit(1);
  L->next=NULL; 
  r=L; //r始终指向尾结点
  cin>>ch;
  while(ch!='#'){
  p=new LNode;
  if(!p) exit(1);
  p->data=ch;
p->next=NULL;
  r->next=p;r=p;
  cin>>ch;
  }return L;
  }
这个是建立一个单链表的,可是里面的头结点只是建立了一下,并把L->next=NULL;,以后好像没他什么事呀,这究竟是怎么回事呀!!!!!

------解决方案--------------------
因为这一句
r=L; //r始终指向尾结点


 则以后对r的操作就会添加到L 上面,也就是加到L的后面。返回L 就是头了。