C语言实现链表之单向链表(五)头结点前插入结点

C语言实现链表之单向链表(五)头结点前插入结点


    上一篇文章给出了清空链表的函数,本篇文章将给出插入结点---在头结点之前插入的函数。

/*============================================================================== 
*   操作  :在头结点之前加入一个新结点
*   操作前:pHeadNode为链表的头指针,ListData为待加入的结点数据元素
*   操作后:数据元素为ListData的结点被加到pHeadNode前面,操作成功返回新的头结点
*           操作失败返回NULL
==============================================================================*/
MyListNode* InsertFirstNode(MyListNode* pHeadNode, MyListData ListData)
{
    MyListNode* pListNodeTmp = NULL;

    // 错误函数输入的处理
    if(pHeadNode == NULL)
    {
        fprintf(stderr, "There is no list.\n");
        return NULL;
    }

    // 为新增结点分配内存
    pListNodeTmp = MallocMemInitNode(pListNodeTmp);
    if(pListNodeTmp == NULL)
    {
        fprintf(stderr, "The new node's memory allocating defeat.\n");
        return NULL;
    }

    // 将原始头结点链接到此结点后面,并将数据进行设置
    pListNodeTmp->pNextNodeAddr  = pHeadNode;
    pListNodeTmp->sNodeData      = ListData;
    pHeadNode = pListNodeTmp;

    return pHeadNode;
}

(1)这个函数依然调用了MallocMemInitNode()函数,用来给结点分配内存,不过数据是由函数参数传入的;

(2)该函数依旧进行了错误处理。

你可能感兴趣的:(C语言,单向链表,插入结点)