C语言实现单链表节点的删除(带头结点)

来源:互联网 发布:江南龙族大画集淘宝店 编辑:程序博客网 时间:2024/04/30 02:39

      我在之前一篇博客《C语言实现单链表节点的删除(不带头结点)》中详细实现了如何在一个不带头结点的单链表的删除一个节点,在这一篇博客中我改成了带头结点的单链表。代码示例上传至 https://github.com/chenyufeng1991/DeleteLinkedList_HeadNode。删除类型有两种:

(1)删除某个位置pos的节点;

(2)判断x值是否在链表中,若存在则删除该节点;

核心代码如下:

//删除某个位置pos的节点Node *DeletePosNode(Node *pNode,int pos){    int i = 1;    Node *pMove;    Node *pMovePre;    pMovePre = pNode;    pMove = pNode->next;    while (pMove != NULL) {        if (i == pos) {            pMovePre->next = pMove->next;            free(pMove);            pMove = NULL;            printf("%s函数执行,在pos=%d位置删除节点成功\n",__FUNCTION__,pos);            return pNode;        }        i++;        pMovePre = pMovePre->next;        pMove = pMove->next;    }    printf("%s函数执行,在pos=%d位置删除节点失败\n",__FUNCTION__,pos);    return pNode;}//判断x值是否在链表中,若存在则删除该节点Node *DeleteValueNode(Node *pNode,int x){    Node *pMovePre;    Node *pMove;    pMovePre = pNode;    pMove = pNode->next;    while (pMove != NULL) {        if (pMove->element == x) {            pMovePre->next = pMove->next;            free(pMove);            pMove = NULL;            printf("%s函数执行,删除value=%d节点成功\n",__FUNCTION__,x);            return pNode;        }        pMovePre = pMovePre->next;        pMove = pMove->next;    }    printf("%s函数执行,删除value=%d节点失败\n",__FUNCTION__,x);    return pNode;}


1 0
原创粉丝点击