将元素添加到 Head 的双链表
Double linked list adding elements to Head
我正在尝试制作一个双链表,并且有两个功能:第一个将元素添加到尾部,第二个应该在开始时添加元素,但它不起作用。
void AddNodeEnd (char addData)
{
nodePtr NewNode = new node;
NewNode->next = NULL;
NewNode->data = addData;
if (head != NULL)
{
curr = head;
while(curr->next != NULL)
{
curr = curr->next;
}
curr->next = NewNode;
}
else
{
head = NewNode;
}
}
void AddNodeHead (char addData)
{
nodePtr NewNode = new node;
NewNode->prev = NULL;
NewNode->data = addData;
head->prev = NewNode;
NewNode->next = head;
NewNode->prev = NULL;
}
我假设head
是指向列表第一个元素的指针。
如果在列表的头部添加新节点,则新节点将成为头部。因此,如果您在列表的开头添加了元素,则必须在末尾分配:head = newNode
。
void AddNodeHead (char addData)
{
nodePtr NewNode = new node;
NewNode->prev = NULL;
NewNode->data = addData;
if ( head != NULL ) // consider an empty list
head->prev = NewNode;
NewNode->next = head; // this also works for an empty list
head = newNode; // <- this is missing in your code
}
追加节点时,不会将head
更新到新节点。
至于其他功能:
void AddNodeHead (char addData)
{
...
NewNode->next = head;
NewNode->prev = NULL; // you have this twice, not needed
}
如果head
NULL
怎么办?您将尝试访问其prev
成员,从而导致运行时错误。
相关文章:
- 反向给定链表中的K节点
- 如果没有malloc,链表实现将失败
- 文本文件中的单词链表
- 努力将整数转换为链表。不知道我在这里做错了什么
- 链表,反向函数,数据结构
- 使用std::list创建循环链表
- 链表的泛型函数remove()与成员函数remove)
- 为什么不能修改对象中的值?另外,我如何改进此链表?
- 我们可以删除链表中静态内存中的节点吗
- 我们可以在不使用head指针的情况下通过使用head的简单变量而不是head的指针来实现链表吗
- 在将第一个值插入链表时尝试访问 head 时出现分段错误
- 将元素添加到 Head 的双链表
- 将链表的头部传递给函数时。为什么我们需要通过引用来传递它,例如在 push(node* &head, int key)
- 链表错误:语法错误:标识符'head'之前缺少';'
- 如何在head中的特定节点后插入链表?c++
- C++ 使用智能指针实现链表 - 'head'未在此范围内声明
- 在链表中设置head等于Node* ptr意味着什么?
- 每次在链表中调用insert_node()函数时,Head都被赋值为Null
- 为什么我不能将 head 之后的节点插入C++链表?
- 尝试创建链表时未定义 head