#include<stdio.h>
#include<stdlib.h>
/* Link list node */
struct node
{
int data;
struct node *next;
};
/* Function to reverse the linked list */
static void reverse(struct node** head_ref)
{
struct node *prev = NULL;
struct node *current = *head_ref;
struct node *next;
while (current != NULL)
{
next = current->next;
current->next = prev;
prev = current;
current = next;
}
*head_ref = prev;
}
struct node *next;
和struct node* next;
之间是否存在差异?答案 0 :(得分:1)
行struct node *prev
是类型“指向struct node的指针”的变量prev
的声明。这些行只是声明了一些局部变量。 prev
包含指向最后处理节点的指针,current
包含指向当前处理节点的指针,next
用于保存指向原始列表的下一个节点的指针。
struct node *next
和struct node* next
之间没有区别。
答案 1 :(得分:1)
@willys是对的。我们知道struts是一组相似且不相似的数据类型。当创建struct时,它会分配一块内存。并且该内存有一个地址。
struct node{
int age;
char name[20];
struct node *next_address; //Address of its type (self referential structure)
}
上面的struct分配了一块内存。在这个块中,存储了3个不同的数据(年龄,名称和结构node
的地址)
当你想存储更多的块(用于存储更多数据)时,你需要分配更多的struct.But,当所有结构在内存中分配时都存在问题,它们之间没有任何关系。它们内存泄漏的原因。
因此,在每个已分配内存块上保留地址字段,以便任何内存块都可以存储其最近块的地址。
它,Linked List的真正风味值。所以,没有关于结构名称的混淆。