双向链表的整表创建与节点插入

自己写了一段双向链表的整表创建和节点插入 不知道哪里错了 求人指点

img

img

基于Monster 组和GPT的调写:


#include <iostream>
#include <cstdlib>
#include <cassert>

using namespace std;

#define OK 1
typedef int Status;
typedef int ElemType;

typedef struct DulNode {
    ElemType data;
    struct DulNode *prior;
    struct DulNode *next;
} DulNode, *DuLinkList;

Status CreateList(DuLinkList &head, int n) {
    head = (DuLinkList)malloc(sizeof(DulNode));
    assert(head != NULL);
    head->next = head->prior = NULL;

    DuLinkList p, r;
    r = head;
    for (int i = 0; i < n; i++) {
        p = (DuLinkList)malloc(sizeof(DulNode));
        p->data = i;
        r->next = p;
        p->prior = r;
        r = p;
    }
    r->next = head;
    head->prior = r;

    return OK;
}

Status InsertDulNode(DuLinkList &head, int i, ElemType e, int &n) {
    DuLinkList s = (DuLinkList)malloc(sizeof(DulNode));
    DuLinkList p = head->next;
    int j = 1;
    while (p != head && j < i) {
        p = p->next;
        j++;
    }
    if (p == head || j > i) {
        return -1;
    }
    s->data = e;
    s->prior = p;
    s->next = p->next;
    p->next->prior = s;
    p->next = s;
    n++;
    return OK;
}

int main() {
    int n, i, e;
    cin >> n >> i >> e;

    DuLinkList head;
    CreateList(head, n);

    InsertDulNode(head, i, e, n);

    DuLinkList p = head->next;
    for (int j = 0; j < n; j++) {
        cout << p->data << " ";
        p = p->next;
    }
    cout << endl;

    return 0;
}


啥错误现象呢?
30-35行的循环中,你并没有设置p->next指向哪

可以把代码用文本贴出来吗

错误现象呢