1

有人可以向我解释以下代码的作用。

set_element *p = (set_el*)malloc(sizeof(set_el)); 

p->value = elem;
p->next = NULL;

return p;

elem参数中传递给方法的元素在哪里,我也有这个:

 typedef struct set_el
 {
   int value;
   struct set_el* next;
 } set_el;
4

2 回答 2

4

这看起来像一个链表的实现。

struct set_el在链表中定义一个节点,其中

  • valueint数据保存在节点中。
  • next是指向列表中下一个节点的指针(链接)。

为要添加到链表中的新节点分配内存:

set_el *p = malloc( sizeof *p ); // cleaned up according to @JohnBode's comment

// If malloc fails, log and return
if(p == NULL)  
{                   
    // log and take necessary action.
    return NULL;
}

变量被复制到节点中elem的数据部分(即):value

p->value = elem;

节点p没有下一个节点,即没有传出链接:

p->next = NULL;

指向新创建节点的指针返回给调用者:

return p;
于 2013-11-08T11:45:17.457 回答
0

这段代码

  • 分配内存只是为了保存一个set_el结构
  • set_el为传递的元素设置新的结构值
  • 将下一个指针设置为NULL

一般来说,它只是将新set_el元素添加到单向链接列表中。

于 2013-11-08T11:41:33.757 回答