想得到合并链表的各节点数据

问题遇到的现象和发生背景

#include
#include

typedef struct Node
{
    int data;
    struct Node* next;
}Node,*LinkList;

InitList(LinkList* L)
{
    *L = (LinkList)malloc(sizeof(Node));
    (*L)->next = NULL;
}

void CreatFromTail(LinkList L)
{
    Node* r, * s;
    int flag = 1;
    r = L;
    char c;
    while (flag) {
        c = getchar();
        if (c !='\n')
        {
            s = (Node*)malloc(sizeof(Node));
            s->data = c;
            r->next = s;
            r = s;
        }
        else
        {
            flag = 0;
            r->next = NULL;

        }
    }
}

LinkList MergeLinkList(LinkList LA, LinkList LB)
{
    Node* pa, * pb;
    LinkList LC; LinkList r;
    pa = LA->next;
    pb = LB->next;
    LC = LA;
    LC->next = NULL; r = LC;
    while (pa != NULL && pb != NULL)
    {
        if (pa->next <= pb->next) {
            r->next = pa; r = pa; pa = pa->next;
        }
        else {
            r->next = pb; r = pb; pb = pb->next;
        }
        if (pa) {
            r->next = pa;
        }
        else {
            r->next = pb;
        }
        free(LB);
        return(LC);
    }
}

Node* GetData(LinkList L, int i)
{
    int j;
    Node* p;
    if (i <= 0)
        return NULL;
    p = L; j = 0;
    while ((p->next != NULL) && (j < i))
    {
        p = p->next;
        j++;
    }
    if (i == j)
        return p;
    else
        return NULL;
}

int ListLength(LinkList L)
{
    Node* p; int j;
    p = L->next;
    j = 0;
    while (p != NULL)
    {
        p = p->next;
        j++;
    }
    return j;
}

int main()
{
    int l = 0;
    Node *tmp=NULL;
    LinkList LA;
    LinkList LB;
    LinkList temp;
    InitList(&LA);
    InitList(&LB);
    CreatFromTail(LA);
    /*printf("H\n");*/
    CreatFromTail(LB);
    temp=MergeLinkList(LA, LB);
    l = ListLength(temp);
    for (int i = 1; i <= l; i++)
    {
        tmp=GetData(temp, i);
        printf("%d", tmp->data);
    }
}
用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容

img

116行修改为
printf("%c ", tmp->data);