我正在学习链表,我只是想知道用*create_new函数连接一个新节点的所有链接是否是好的或坏的做法。
从我在网上读到的,他们只有下一个链接,但我想让它也连接上一个链接。下面是我的代码:
node *create_new (int new_data, node *prev, node *next)
{
node *new_node = malloc(sizeof(node));
if (new_node == NULL)
{
    printf("Error in creating new node\n");
    exit(0);
}
new_node->data = new_data;
new_node->next = next;
prev->next = new_node;
return new_node;
}发布于 2019-01-28 21:38:31
您的代码可以正常工作。但是,对于单链接列表,您不需要传递next,因为prev->next应该指向next
node *create_new (int new_data, node *prev)
{
    node *new_node = malloc(sizeof(node));
    if (new_node == NULL)
    {
        printf("Error in creating new node\n");
        exit(0);
    }
    new_node->data = new_data;
    new_node->next = prev->next;
    prev->next = new_node;
    return new_node;
}发布于 2019-01-28 21:29:31
允许将单元格插入到双重链表(如std:: list )中,或者用新的单元格替换连续的单元格
如果下一步是prev->next,您需要在它们之间插入新的单元格。
如果prev->next不是next,那么它们之间的所有单元格都会被新的单元格替换(并且可能会丢失,不会被删除)
如果你有n0<->n2<->n3和create_new(1, n0, n2),你就会有n0<->n1<->n2<->n3,但是如果你现在有create_new(7, n0, n3),你就会有n0<->n7<>n3,单元格n1和n2会被删除(可能会丢失)
所以有一件事是肯定的:它的名字是错误的,因为它更像是replaceBetween
发布于 2019-01-28 21:29:41
我假设你在网上读过关于简单链表的文章(默认情况下,当人们谈论链表时,它们就是简单链表)。
https://stackoverflow.com/questions/54402984
复制相似问题