【发布时间】:2017-10-05 03:35:53
【问题描述】:
我正在尝试编写一个链表,其限制是节点内部的指针必须指向下一个节点的指针。有了这个限制,我将如何访问节点内的变量? 说定义了节点
struct Node {
int val;
void *next;
}
但是对于每个节点,假设我们有 currentNode 和 nextNode,我们将 void *next 值设为
currentNode.next = &(nextNode.next);
您将如何创建它并有效地访问每个节点?
【问题讨论】:
-
为什么有这个限制?为什么将其声明为
void*而不是struct node **? -
next指针是结构体开头的某个offset。虽然非常不鼓励,但您始终可以通过一些简单的算术获得指向结构的指针。 -
这是一个学校作业,我们不能修改结构。我们必须编写一个与这样的列表一起使用的函数,但我需要先了解列表是如何工作的,然后才能这样做。我找不到像这样的列表的任何示例。限制在这个赋值中,void *next 指向下一个节点中的下一个字段,而不是节点的开头。即 curr_node.ptr = &(next_node.ptr);不是 curr_node.ptr = &next_node
-
@Barmar 我想你的意思是
struct Node * -
如果这是限制,那很好。更改结构,使“下一个”指针位于结构的开头: 'struct Node {void *next; int val;}' 完成。
标签: c pointers linked-list