C++:双向链表的初始化,运行时出现调用无用内存的错误

运行时出现调用无用内存的错误,我的代码如下:


#include<iostream>
using namespace std;
typedef struct DuLNode
{
    int data;
    struct DuLNode* piror;
    struct DuLNode* next;
}DuLNode, * DuLinkList;
void InitDuL(DuLinkList& L, int n)
{
    L=NULL;
    L->next = L;
    L->piror = L;
    int i;
    DuLinkList p, temp;
    temp = L;
    for (i = 0; i < n; i++)
    {
        p = new DuLNode;
        cin >> p->data;
        p->next = NULL;
        p->piror = NULL;
        temp->next = p->piror;
        temp->piror = p;
        p->piror = L;
        p->next = temp;
        temp = p;
    }
}
void showDuL(DuLinkList& L, int n)
{
    int i;
    DuLinkList temp;
    temp = L;
    for (i = 0; i < n; i++)
    {
        temp = temp->next;
        cout << temp->data;
    }
}
int main()
{
    DuLinkList L;
    int n;
    cin >> n;
    InitDuL(L, n);
    showDuL(L, n);
    return 0;
}

img

请问哪错了啊?

你没有给L分配空间啊
你思考一下:
L=NULL;
L->next = L;
L->piror = L;
这样写能行么?L都设置为空了,怎么还能修改里面的内容呢???
怎么也得将L=NULL改为L= new DuLNode;吧

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632