C链接列表实现

时间:2015-01-19 16:13:20

标签: c list linked-list malloc 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;
}

1 个答案:

答案 0 :(得分:2)

malloc ()的返回类型是一个void指针。

这个void指针被安全地提升为struct类型而不进行任何转换。

因此您无需转换malloc()的结果。

但是包含演员是一个很好的编码实践。 您可以阅读详细的答案here。 更正:@UnderDog