向链表中添加结束节点
Add end node to linked list
似乎无法确定我在这里错过了什么。我知道如何正确地在链表的开头插入一个新节点:
void InsertBeginning(int val) {
Node *n = new Node();
n->data = val;
n->next = A;
A = n;
DisplayList(); //prints list
}
现在我想做同样的事情但是在列表的末尾,所以我做了这个:
void AddNode(int val) {
Node *n = new Node();
n->data = val;
n->next = A;
//finds last empty node
while (n->next != NULL) {
n = n->next;
}
A = n;
DisplayList();
}
但这只是删除了除第一个节点以外的所有节点。
遍历列表,然后添加新节点。注意,不需要修改A
,它可能指向列表的头,因为它没有改变。
void AddNode(int val) {
Node *n = new Node();
n->data = val;
n->next = NULL;
Node *pnt = A;
// If list is empty, new node becomes first node
if (!pnt) {
A = n;
return;
}
//finds last empty node
while (pnt->next != NULL) {
pnt = pnt->next;
}
pnt->next = n;
DisplayList();
}
允许统一处理所有情况(即避免对"列表中的第一个节点"情况进行特殊处理)的常见习惯用法如下
void AddNode(int val)
{
Node *n = new Node();
n->data = val;
// Assuming that `n->next` is already null
Node **pnext = &A;
for (; *pnext != NULL; pnext = &(*pnext)->next);
*pnext = n;
DisplayList();
}
相关文章:
- 反向给定链表中的K节点
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- Boost Graph Library,修复节点大小
- 为什么在这个代码结束循环中没有得到结束
- C++A*算法并不总是在路径中具有目标节点
- 如何找到2个单链表的公共节点
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 试图对缓存进行跨步测试,但程序并没有结束
- 为什么我的删除节点函数实际上没有删除节点?
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 我们可以删除链表中静态内存中的节点吗
- 如何在pugixml中获取节点的内部XML
- 为什么擦除方法会影响结束方法
- 根据用户输入用字母填充矢量,并将"开始"和"结束"放在四肢
- 为什么我们要为avl树实现返回一个指向节点的指针,而不是void函数
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 函数结束后儿童节点的树递归C 缺失值
- trie以当前节点或节点结束
- 找到最大路径总和,我们可以在二叉树中的任何节点开始和结束
- 向链表中添加结束节点