链表中的指针算术混乱
Pointer arithmetic confusion in linked list
所以我正在查看一个链表,其中节点设置如下
struct node {
node *next;
node **prev;
};
node *rel_list;
有人可以解释指针操作在以下代码块(来自节点创建函数)中的工作原理,尤其是第 5 行。
1 node *r;
2 r->next = rel_list;
3 r->prev = &rel_list;
4 if (rel_list)
5 rel_list->prev = &r->next;
6 rel_list = r;
在大多数链表实现中,指针指向节点,而不是指针:
+------+
| prev |
+------+
| data |
+------+
| next |
+------+
+------+ +------+ +------+
| 0 | +------| | +------| |
+------+ | +------+ | +------+
| A |<--+ +-->| B |<--+ +-->| C |
+------+ | +------+ | +------+
| |------+ | |------+ | 0 |
+------+ +------+ +------+
在代码中,使上一个指针指向下一个指针,而不是指向上一个节点。
编辑 1:示例
node * ptr_node = new node;
ptr_node->prev = nulptr;
ptr_node->next = nulptr;
// Insert at the head
ptr_node->prev = head_pointer;
ptr_node->next = head_pointer->next;
head_pointer = ptr_node;
恕我直言,链表更适合绘制(图片)以掌握概念。 浏览上面的示例并"绘制"每个步骤。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 常量指针上的混乱
- 数组和指针使算术混乱
- C++智能指针混乱
- 指针混乱char* and int*
- 链接列表插入,指针混乱
- 指针地址和参考混乱
- 链表中的指针算术混乱
- 交换功能 - 指针 - 混乱
- C ,向量,指针和对象混乱
- 指针,矢量列表=大混乱
- 指向数组混乱的指针
- 使用 std::sort 对指针向量进行排序,导致地址混乱
- 我有一些混乱的指针删除和分配指针到类