为什么在链表中声明指向同一结构体的指针?
Why do we declare pointer to the same struct in Linked Lists
struct Node
{
int value;
Node *next;
Node *prev;
};
这是一个链表的创建。我的问题是,为什么我们声明同一结构体的指针。例如节点*next
。如果我们要有一个整数链表,我们可以直接使用int *
和int *prev
而不是使用节点*next
吗?
链表中的每个元素不仅包含数据(在您的示例中为int
),还包含指向下一个元素的指针(在双链表中,也有指向前一个元素的指针)。没有它,就不能构造一个超过两个元素的列表。
结构用于在一个公共内存块中对变量列表进行分组,这有助于使用单个指针访问元素。在你的问题中,你说为什么我们不只使用int *如果我们使用,我们不能分组其他元素,也不能同时保存值和链接。
把结构体想象成容器,里面存储着对象(int, char…)。要访问特定容器中的对象,首先需要找到容器,因此需要容器的地址(即。(struct的地址)。
考虑以下结构。
struct Node
{
int value;
int *next
};
在struct Node
内部有一个整数和一个指向整数的指针。当你为第一个结构体分配内存时,它就像一个容器,里面存放着一个整数和一个指向整数的指针。在这种情况下,链将以第一个结构本身结束,因为您没有指向第二个结构(从第一个结构内部),第二个结构可以保存指向第三个结构的指针,以此类推。
如果你想把这个结构体链接到另一个相同类型的结构体(实际上是创建一个链表),你需要一个指针,它可以指向另一个相同类型的结构体。因此,需要在任何用于链表的结构中都有一个指向相同类型结构的指针。
相关文章:
- C++ 使用成员函数返回结构体指针属性的值
- 在使用结构体和用函数填充其变量(使用指针)时遇到问题
- 如何使用结构体作为接口从函数返回指向数组的指针
- 如何在结构体中传递指向CURL的指针到向量
- 使用c++中从IDA导出的带有指针的结构体
- 设置两个结构体相等后,指针为NULL
- 结构体中的指针
- 指向结构体的向量指针错误
- 指向结构体的Void *指针
- 返回指向类定义的结构体的指针,多个作用域操作符
- 带有指针的结构体向量
- 你能解释一下指针和递归结构体吗?
- c语言中具有指针数组的结构体
- c++用数组、结构体和指针排序
- 初始化没有指针的结构体
- 如何在不激怒编译器的情况下传递指向结构体的指针?
- 如何释放一个结构体的内存,每次循环迭代的指针
- 如何根据结构体的字段之一对结构指针列表进行排序?
- 从c#调用c++函数-结构体,指针,函数指针
- 实现了结构体的向量和具有指向结构体指针的映射