数据结构学习系列之单向链表的两种创建方式

  • 方式1:
  • 通过返回值返回所申请的头结点所在的内存空间首地址,即创建单向链表的头结点,代码如下:
  • 示例代码:
node_t *create_link_node_1(){
    
    

    node_t *phead = (node_t *)malloc(sizeof(node_t));
    if(NULL == phead){
    
    

        printf("内存分配失败\n");

        exit(-1);

    }
    //或者memset(phead, 0, sizeof(node_t));
    phead->data = -1;
    phead->next = NULL;

    return phead;

}
  • 注意事项:
  • 1.分配完头结点的内存地址空间后,一定要检查内存分配是否成功
  • 2.若头结点的内存分配失败,需要使用shell命令exit(-1)退出
  • 3.单向链表的每个结点都有数据域和指针域,而头结点的数据域可以不储存任何数据,头结点的数据域在此函数中,被赋值 -1
  • 4.头结点的指针域被赋值 NULL,表示此时的单向链表只有一个头结点
  • 方式2:
  • 使用地址传参的方式创建单向链表的头结点,代码如下:
  • 示例代码:
int create_link_node_2(node_t **phead,int data){
    
    

    if(NULL == phead){
    
    


        printf("入参为NULL\n");

        return -1;

    }

    *phead = (node_t *)malloc(sizeof(node_t));

    if(NULL == *phead){
    
    


        printf("内存分配失败\n");

        return -1;

    }
     //或者memset(*phead, 0, sizeof(node_t));
    (*phead)->data = data;
    (*phead)->next = NULL;

    return 0;

}
  • 注意事项:
  • 1.所传入的形参必须是二级指针变量,因为二级指针用来存储一级指针变量的地址,即所申请的单向链表头结点在内存空间的地址
  • 2.形参传入到创建单向链表头结点的功能函数后,一定要做入参合理性检查
  • 3.同方式1一样,分配完头结点的内存地址空间后,一定要检查内存分配是否成功
  • 4.头结点的数据域被赋值 -1
  • 5.头结点的指针域被赋值 NULL

猜你喜欢

转载自blog.csdn.net/qq_41878292/article/details/132650574