链表节点结构的第一个成员变量总是下一个节点
linked list first member variable of node structure always next node
假设您有一个如下定义的节点链接列表:
C++代码
struct node {
node *next;
int i ;
};
将下一个指针作为结构的第一个成员变量有什么好处吗?
我认为人们通过上述方法尝试这一点(我可能错了(
node n, m;
*n=&m;
如果上面是正确的,那么像上面这样编码是正确的吗。正确的方法是什么?
将下一个指针作为第一个成员有什么好处吗结构变量?
在从零偏移成员加载和向零偏移成员写入时,可以减少汇编指令的大小,但仅在没有虚拟表的类中(vtbl是省略的第一个成员(,从而可以获得非常小的性能优势。
如果您想要预构建一个范围/全局分配列表,则可以如上所述对其元素进行初始化。
你可以试试:
struct node {
struct node* next;
int i;
};
node z = {0}, c={&z}, b={&c}, a={&b};
node * stack = &a;
你可以在搜索"linux内核链接列表"时找到关于喜欢列表的非常有用的信息:
- Linux内核链表说明
- 内核是如何实现链表的
我现在正在使用c++模板设计"侵入式节点"通用容器,也许这个问题看起来很有趣。
node n, m;
*n = &m;
不是法定代码,也许你指的是
node n, m;
n.next = &m;
但通常情况下,这将通过动态分配来完成
node* n = new node;
n->next = new node;
因为通常您会使用CCD_ 1来创建可变长度列表。由于列表的长度各不相同,因此无法声明正确数量的变量,而是必须动态分配节点。
相关文章:
- 重新定位图像时如何前进到下一个内存块
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- 用于在 C++ 中使用 while 循环查找下一个素数的简单函数
- CIN 仅在输入非数字值时跳过下一个 CIN
- 查找最小的下一个更大的元素
- 转到基于范围的 for 循环中的下一个迭代器
- 在解决链表问题时创建一个额外的节点是一个好习惯吗?
- 如何检查流中文件的下一个单词是否为 alpha?
- C++循环链表删除,计数从下一个节点开始
- 取消下一个节点的空链接列表的头
- 链表 - 移动到下一个节点
- 如何使运算符++继续到链表中的下一个节点指针
- 重载 + 运算符以模拟移动到下一个节点
- 双向链表节点的下一个是私有的
- 将下一个节点移回功能
- 只是尝试插入一个节点并将指针设置为下一个节点C++
- Boost XML - 获取下一个节点
- 转到下一个节点的C++链接列表错误
- 链表节点结构的第一个成员变量总是下一个节点
- 为链表中的节点分配内存,但出乎意料的是,它内部的下一个节点也被分配了