这个为什么是死循环?

//教学平台一直提示为死循环,可是找了半天也找不到,请求路过的大佬解答。
#define Maxsize 100
typedef struct DL_Lnode{
    char data;
    struct DL_Lnode *front;
    struct DL_Lnode *rear; 
}DL;
DL *Creat_DL(){
    DL *L;
    L=(DL *)malloc(sizeof(DL));
    L->front=L;
    L->rear=L;
    return L;
}
void Init_DL(DL *L){
    char c;
    DL *p;
    p=L;
    while((c=getchar())!='\n'){
        DL *n;
        n=Creat_DL();
        n->data=c;
        p->rear=n;
        n->front=p;
        L->front=n;
        n->rear=L;
        p=n;
    }
}
void Emtpy_DL(DL *L){
    DL *F,*R;
    F=L->front;
    R=L->rear;
    while(F->data==R->data){
        if(F==R||F->front==R){
            printf("yes\n");
            exit(1);
        }
        F=F->front;
        R=R->rear;
    }
    printf("no\n");
}
int main(){
    DL *L;
    L=Creat_DL();
    Init_DL(L);
    Emtpy_DL(L);
}

检查字符回文的