C语言找bug啊,实在看不出来啊,到底为什么输入不成功,但也不报错啊


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define TRUE        1
#define FALSE       0
#define OK          1
#define ERROR       0
#define INFEASIBLE  -1
#define OVERFLOW    -2


typedef struct LNode
{
    char data[100];
    struct LNode *next;

}LNode,*LinkList;



//在链表末尾增加新的节点,新节点数据域为data
void ListInsert(LinkList* L,char *data)
{
    LinkList temp=*L;
    LinkList p=(LinkList)malloc(sizeof(LNode));

    strcpy(p->data,data);
    //strcpy(p->data,*data),这样是有问题的,只有第一个元素
    p->next=NULL;
    //if、else着重再想想!!!!!!!!!!!!!!!
    if(*L==NULL)
        *L=p;
    else
    {
        while(temp->next!=NULL)
        {
            temp=temp->next;
        }
        temp->next=p;
    }
}


//链表数据的输入
void ScanData(LinkList L)
{
    char data[100];
    int count=0;
    int num=5;
    while(count<num)
    {

        gets(data);
        ListInsert(&L,data);
    }
}


int main(void)
{
    LinkList h=(LinkList)malloc(sizeof(LNode));
    ScanData(h);
  

    return 0;

}
while(count<num)
    {
 
        gets(data);
        ListInsert(&L,data);
        count++;  -- 少了这句,就是死循环