双向链表的尾插法创建不能输出

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

双向链表不能输出

用代码块功能插入代码,请勿粘贴截图
#include
#include
#include
#include
using namespace std;

#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。
typedef int ElemType; //ElemType 为可定义的数据类型,此设为int类型

struct Point {
    int x;//ISBN
    int y;//书名
};
typedef struct DuLNode {
    Point data; //数据域
    struct DuLNode *prior; //直接前驱
    struct DuLNode *next; //直接后继
} DuLNode, *DuLinkList;


Status InitDuList_L(DuLinkList &L) {
    L = new DuLNode;
    L->prior = NULL;
    L->next = NULL;
}

DuLNode *GetElem_DuL(DuLinkList L, int i) 
{
    DuLinkList p = L->next;
    int j = 1;
    while(p && jnext;
        j++;
    }
    
    return p;

} //GetElemP_DuL

Status ListInsert_DuL(DuLinkList &L, int i, Point e) { //算法2.13 双向链表的插入
    //在带头结点的双向链表L中第i个位置之前插入元素e,i的合法值为1<=i<=表长+1
    DuLinkList p, s;
    p = new DuLNode;
    p = GetElem_DuL(L, i);
    if(!(p=GetElem_DuL(L,i)))
        return ERROR;
    
    s = new DuLNode;
    s->data = e;
    s->prior = p->prior;
    p->prior->next = s;
    s->next = p;
    p->prior = s;

} //ListInsert_DuL

Status ListDelete_DuL(DuLinkList &L, int i) { //算法2.14 双向链表的删除
    //删除带头结点的双向链表L中第i个位置之前插入元素e,i的合法值为1<=i<=表长
    DuLinkList p;
    p = new DuLNode;
    p = GetElem_DuL(L, i);
    if(!(p=GetElem_DuL(L,i)))
        return ERROR;
    
    p->prior->next = p->next;
    p->next->prior = p->prior;
    
    delete p;
    return OK; 

}//ListDelete_DuL

void CreateDuList_L(DuLinkList &L, int m) 
{
    //正位序输入n个元素的值,建立带表头结点的双向链表L,同时建立前驱指针

//    p = L;
    int i;
    DuLinkList s;
    Point e;
    for(i=0; inew DuLNode;
        
        cin >> e.x >> e.y; 
        s->data = e;
        s->prior = L;
        s->next = L->next;
        L->next = s;
        L = s;//时刻保持尾指针指向尾结点 
        
    }
} //CreateDuList_L
 

int main() 
{
    int a, choose;
    char op;
    Point e;
    DuLinkList L, p;
    
    cin >> choose;
    
    while (choose --) 
    {
        cin >> op;
        switch (op) 
        {
            case 'I': //建立一个双向链表
                if (InitDuList_L(L))
                break;
            case 'C': //使用后插法创建双向链表
                int n;
                cin >> n;
                CreateDuList_L(L, n);
                break;
            case 'S': //双向链表的插入
                cin >> a;
                cin >> e.x >> e.y;
                ListInsert_DuL(L, a, e);
                break;
            case 'D': //双向链表的删除
                cin >> a;
                ListDelete_DuL(L, a);
                break;
        }
    }
     //双向链表的输出
    p = L->next;
    while (p) 
    {
        cout << p->data.x << ' ' <<  p->data.y << endl;
        p = p->next;
    }
    
    return 0;
}

运行结果及报错内容

没有输出

我的解答思路和尝试过的方法

不知道哪里出错了

我想要达到的结果

有输出

把你测试输入的数据发下,我本地调试看看