在删除单链表中x元素的结点,无法输入第二个字母,为什么

#include <stdio.h>
#include <stdlib.h>
typedef char ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
} LNode,*LinkList;
LinkList creat(LinkList L)//头插法建立
{
    LinkList s;
    printf("请选择输入的个数:\n");
    int i,n;
    char m;
    scanf("%d",&n);

    for(i=0; i<n; i++)
    {
        s=(LinkList)malloc(sizeof(LNode));
        s->next=NULL;
        scanf("%s",m);
        s->data=m;
        s->next=L->next;
        L->next=s;

    }
    return L;
}
void PrintList(LinkList L)
{
    LinkList p;
    p=L->next;
    printf("链表元素如下:\n");
    while(p!=NULL)
    {
        printf("%s ",p->data);
        p=p->next;
    }
    printf("\n");
}
void DeleteList(LinkList L)
{
    LinkList p,q;
    p=L->next;
    while(p!=NULL)
    {
        if(strcmp(p->data,"x")!=0)
            p=p->next;
        else
        {
            q=(LinkList)malloc(sizeof(LNode));
            q=p->next;
            p->data=p->next->data;
            p->next=q->next;
            free(q);            p=p->next;
        }
    }
    printf("\n");
}
int main()
{
    LinkList L;

    L=(LinkList)malloc(sizeof(LNode));
    L->next=NULL;
    L=creat(L);
    PrintList(L);
    printf("删除x的节点:\n");
    DeleteList(L);
    return 0;
}

修改见注释,供参考:

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

typedef char ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode* next;
} LNode, * LinkList;

void creat(LinkList L)//头插法建立,修改  LinkList creat(LinkList L)
{
    LinkList s;
    printf("请选择输入的个数:\n");
    int i, n;
                                //char m;修改
    scanf("%d", &n);
    for (i = 0; i < n; i++)
    {
        s = (LinkList)malloc(sizeof(LNode));
        s->next = NULL;
        getchar();            //修改,吸收缓冲区多余字符
        scanf("%c", &s->data);//scanf("%s", m);修改
                              //s->data = m;修改
        s->next = L->next;
        L->next = s;
    }
                             //return L;  修改
}
void PrintList(LinkList L)
{
    LinkList p;
    p = L->next;
    printf("链表元素如下:\n");
    while (p != NULL)
    {
        printf("%c ", p->data);//printf("%s ",p->data);修改
        p = p->next;
    }
    printf("\n");
}

void DeleteList(LinkList L, ElemType x) //修改
{
    LinkList p, q;
    q = L;
    p = L->next;
    while (p != NULL)
    {
        if (p->data == x) {//if (strcmp(p->data, "x") != 0)修改
            q->next = p->next; // p = p->next; 修改
        //else
        //{
        //    q = (LinkList)malloc(sizeof(LNode));
        //    q = p->next;
        //    p->data = p->next->data;
        //    p->next = q->next;
            free(p); //修改
            break;
        }   
        q = p;
        p = p->next;
    }
    printf("\n");
}
int main()
{
    LinkList L;
    ElemType x;       //修改
    L = (LinkList)malloc(sizeof(LNode));
    L->next = NULL;
    creat(L);        //L = creat(L); 修改
    PrintList(L);

    printf("输入需要删除的节点元素 x:\n");//修改
    getchar();        //修改
    scanf("%c", &x);  //修改 
    DeleteList(L,x); //修改
    PrintList(L);

    return 0;
}

哥,你这个m是char类型啊,然后你scan成字符串那是肯定不行的呢。