【发布时间】:2018-08-21 23:15:51
【问题描述】:
此函数在双向链表中的给定节点之后插入一个新节点。
除非列表为空或给定节点为 NULL,否则它运行良好。
我尝试通过插入新节点作为头来解决这个问题,但它没有添加新节点或添加第二个节点时出现问题。
void insert(Polynomial** node, int new_data, int pow) {
Polynomial* new_node = ( Polynomial*)malloc(sizeof( Polynomial));
new_node->num = new_data;
new_node->pow = pow;
if ((*node) == NULL) {
new_node->prev = NULL;
(*node) = new_node;
return;
}
new_node->next = (*node)->next;
(*node)->next = new_node;
new_node->prev = (*node);
if (new_node->next != NULL)
new_node->next->prev = new_node;
}
结构:
typedef struct Polynomial {
int num;
int pow;
struct Polynomial* next;
struct Polynomial* prev;
}Polynomial;
【问题讨论】:
-
node = new_node仅更改 local 变量node,因此您的函数不会修改传递给它的节点指针的值。 -
现在尝试使用指向指针的指针,头节点可以工作,但是在将第二个节点添加到列表中时它不起作用。
-
显示新代码。 “它不起作用”不是有效的问题描述。
-
用新代码编辑了问题
-
我不断收到 new_node->下一个是 0xCDCDCDCD。