链表箭头运算符
Linked list arrow operator
在一个基本的链表程序中,我通常实现它:
struct node {
int info;
struct node * next;
};
int main() {
struct node * head = malloc(sizeof(node)*3); //for 3 nodes
head->info = 1;
head->next->info = 2;
head->next->next->info = 3;
//more code
}
现在,要打印第二个节点的内容,我使用以下语句:
cout<<head->next->info;
我的问题是,除了使用上述声明,是否可以使用以下语句:
cout<<head[1]->info;
我的问题是,除了使用上述声明,是否可以使用以下语句:
cout<<head[1]->info;
实际上,在您的情况下,是的,因为您的代码不会创建链表,而更像是一个数组。一个数组,其中每个元素显然应该有一个指向下一个元素next
指针,但所有这些指针都是未初始化的。
使用std::list
直到您知道链表的工作原理...然后无论如何都要继续使用它!
链表意味着具有在内存中不连续的元素。格式头[1]需要连续的元素。
无论如何,示例中的代码不代表链表
NO.head 是一个指针,head[1] 表示 *(head+1),但在你的列表中,每个列表节点都不相邻。通常,列表无法执行此操作,除非您将每个节点与相邻地址一一放置
对不起,我的英语很差
相关文章:
- 链表中的重载运算符<<
- 重载运算符 += 用于 C++ 中的链表
- 链表的重载运算符+
- 运算符 == 双链表的重载
- 使用运算符+将两个已排序的链表合并到位
- 双链表C++的赋值运算符
- 为什么T是未定义的?我正在尝试实现一个用于双链表的节点类,它不喜欢我使用友元运算符后的T
- 运算符"<<"双链表溢出。C++
- C++ 链表列表运算符[]
- C++ - <<运算符重载,链表 - 地址而不是标准输出
- C++ 使用链表的自定义字符串类中的重载 + 运算符
- C++ 带有链表的重载 += 运算符
- C++中动态分配的单向链表的赋值运算符 (MS Visual Studio 2015)
- 如何在C++中使用 <<= 运算符格式化链表
- 链表的这个别名运算符是否会产生深度复制
- 后缀运算符链表泛型节点迭代器
- 链表的赋值运算符
- 对链表复制构造函数和赋值运算符使用 copy() 方法
- 链表运算符 = 移动分配时,将移动所有元素
- 赋值运算符链表c++