我想用链表写可是得不到输出结果程序就终止了,希望可以得到指导!

swust oj 941
题目描述
已知两非递减的顺序线性表,要求合并成一个新的非递减顺序线性表。(测试数据为整型)

输入

img

输出

img

样例输入

img

样例输出

img

#include <iostream>
using namespace std;
typedef struct LNode{
    int data;
    struct LNode *next;
}LNode,*LinkList;
void InitList(LinkList &L,int n)//尾插法创建单链表的函数,赋值我测试过了没问题,数值确实存在了链表里面
{
    LinkList r=L;
    for(int i=0;i<n;i++)
    {
        LinkList p=new LNode;
        cin>>p->data;
        p->next=NULL;
        r->next=p;
        r=p;
    }
}
void AddList(LinkList &L1,LinkList &L2)//合并两个单链表的函数 
{
    LinkList p4=new LNode; 
    LinkList p1,p2,p3,r;//r为当p1->data==p2->data时,因为我们只把p1连接到p3,所以用r保存p2,并在p2往下走之后释放原p2空间 
    p1=L1->next;             
    p2=L2->next;
    p3=L1;
    p4=L1;
    while(L1&&L2)
    {
        if(p1->data<p2->data)
        {
            p3->next=p1;
            p3=p1;
            p1=p1->next;
        }
        else if(p1->data==p2->data)
        {
            p3->next=p1;
            p3=p1;
            p1=p1->next;
            r=p2;
            p2=p2->next;
            delete r;
        }
        else
        {
            p3->next=p2;
            p3=p2;
            p2=p2->next;
        }
    }
    p3->next=p1?p1:p2;
    delete L2;
    for(p4;p4;p4=p4->next)//输出合并了的链表 
    {
        cout<<p4->data<<" ";
    }
    cout<<endl;
}
int main()
{
    int n,m;
    LinkList L1=new LNode;
    LinkList L2=new LNode;
    L1->next=NULL;
    L2->next=NULL;
    cin>>n;
    InitList(L1,n);
    cin>>m;
    InitList(L2,m);
    AddList(L1,L2);
    return 0;
 } 

问题是没有输出结果,把两组测试数据输入后按回车直接就不给输出结果,但是程序终止运行了。不管能不能得到解答,我都感谢每一位划过的人。

LinkList p4=new LNode;
p4=L1;
这两句显然不行了。new的指针不白new了?