自己写了一段双向链表的整表创建和节点插入 不知道哪里错了 求人指点
基于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指向哪
可以把代码用文本贴出来吗
错误现象呢