Pointers 指向struct的指针-几个问题 #包括 #包括 /*链接列表节点*/ 结构节点 { int数据; 结构节点*下一步; }; /*函数可反转链接列表*/ 静态无效反向(结构节点**头部\u参考) { 结构节点*prev=NULL; 结构节点*current=*head\u ref; 结构节点*下一步; while(当前!=NULL) { 下一步=当前->下一步; 当前->下一步=上一步; prev=当前值; 当前=下一个; } *head_ref=上一个; } 反向函数中以struct开头的行负责什么? 他们是扩展原始结构还是创建原始结构指向的新结构?我真的不明白为什么原始结构没有名字 struct node*next之间是否存在差异和结构节点*next
行Pointers 指向struct的指针-几个问题 #包括 #包括 /*链接列表节点*/ 结构节点 { int数据; 结构节点*下一步; }; /*函数可反转链接列表*/ 静态无效反向(结构节点**头部\u参考) { 结构节点*prev=NULL; 结构节点*current=*head\u ref; 结构节点*下一步; while(当前!=NULL) { 下一步=当前->下一步; 当前->下一步=上一步; prev=当前值; 当前=下一个; } *head_ref=上一个; } 反向函数中以struct开头的行负责什么? 他们是扩展原始结构还是创建原始结构指向的新结构?我真的不明白为什么原始结构没有名字 struct node*next之间是否存在差异和结构节点*next,pointers,struct,Pointers,Struct,行struct node*prev是“指向结构节点的指针”类型的变量prev的声明。这些行只声明了一些局部变量prev包含指向上次处理节点的指针,current包含指向当前处理节点的指针,next用于保存指向原始列表下一个节点的指针 struct node*next和struct node*next之间没有区别 @威利斯是对的。正如我们所知,struts是一组相似和不相似的数据类型。当struct被创建时,它分配一块内存。内存有一个地址 #include<stdio.h> #incl
struct node*prev
是“指向结构节点的指针”类型的变量prev
的声明。这些行只声明了一些局部变量prev
包含指向上次处理节点的指针,current
包含指向当前处理节点的指针,next
用于保存指向原始列表下一个节点的指针
struct node*next
和struct node*next
之间没有区别@威利斯是对的。正如我们所知,struts是一组相似和不相似的数据类型。当struct被创建时,它分配一块内存。内存有一个地址
#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;
}
上述结构分配一块内存。在该块中存储着3个不同的数据(年龄、名称和结构节点的地址
)
当您想要存储更多的块(用于存储更多数据)时,您需要分配更多的结构。但是,当所有结构都分配到内存中时,存在一个问题,它们之间没有任何关系。这是内存泄漏的一个原因
因此,在分配的每个内存块上保留地址字段,以便任何内存块都可以存储其最近的块的地址
它是链表的真正风格值。因此,结构的名称没有混淆。谢谢。为什么我需要
int数据代码>在结构内部?那是保存数据的地方吗?如果是,怎么做?在结构旁边的代码中我看不到任何对数据的引用。是的,节点包含保存实际信息的字段data
,以及指向列表中下一个节点的指针的字段next
。
struct node{
int age;
char name[20];
struct node *next_address; //Address of its type (self referential structure)
}