C 链表实现

C Linked lists implementation

我在理解链表的实现时遇到问题,我了解了基本概念,但我有一个问题:

new_node = (node*) malloc(sizeof(node))

为什么我们在这里使用(节点*)?为什么我们不直接说:

new_node = malloc(sizeof(node))?

提前感谢您的回答。

typedef struct node{
 int value;
 struct node* next_node;
}node;

node* create_node(int v){
 node* new_node;

 new_node=(node*) malloc(sizeof(node));
 if(new_node==NULL){
    fprintf(stderr, "Allocation problem.\n");
    exit(1);
 }
 new_node->value=v;
 new_node->next_node=NULL;

 return new_node;
}

malloc ()的return类型是空指针。

此 void 指针无需任何转换即可安全地提升为结构类型。

所以你不需要转换malloc()的结果。

但是包含强制转换是一个很好的编码习惯。 您可以阅读详细答案here。 更正:@UnderDog