C语言归并有序单链表的问题

自己写了一个归并两个有序单链表成为一个有序单链表的程序,奈何运行没有结果。
求教各位网友,本人学生,望不吝赐教。

#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
        int data;
        struct Node *next;
    } Node;
Node* creatNode(int i)
{
    Node *a = (Node *)malloc(sizeof(Node));
    a->data = i;
    a->next = NULL;
    return a;
}
void insert(Node* p,int k){
    Node* insertion;
    insertion = creatNode(k);
    while(p->next!=NULL){
        p = p->next;
    }
    p->next = insertion;
}
void merge(Node*a,Node*b,Node**c)
{
    Node *p, *q;    //p和q指针分别指向a和b中最小的元素
    p = a->next;
    q = b->next;
    *c = a;
    free(b);
    while(p!=NULL&&q!=NULL){
        if(p->data<=q->data){
            insert(*c, p->data);
            p = p->next;
        }
        else{
            insert(*c, q->data);
            q = q->next;
        }
    }
    while(p!=NULL){
        insert(*c, p->data);
        p = p->next;
    }
    while(q!=NULL){
        insert(*c, q->data);
        q = q->next;
    }
}
int main()
{
    Node *a = creatNode(0);
    insert(a, 2);
    insert(a, 4);
    insert(a, 6);

    Node *b = creatNode(0);
    insert(b, 1);
    insert(b, 3);
    insert(b, 5);

    Node *c = creatNode(0);
    merge(a, b, &c);

    while(c!=NULL){
        printf("%d\t", c->data);
        c = c->next;
    }
    getchar();
    return 0;
}

一样的问题,刚回答过,这是你的同学?

https://ask.csdn.net/questions/1053826