C言語によるシングルチェーンテーブルノードの削除(先頭ノード)


私は前のブログ「C言語実現シングルチェーンテーブルノードの削除(先頭に立たないノード)」で、先頭に立たないシングルチェーンテーブルでノードを削除する方法を詳しく実現しました.このブログでは、先頭に立たないシングルチェーンテーブルに変更しました.コード例のアップロード先https://github.com/chenyufeng1991/DeleteLinkedList_HeadNode.削除タイプは2種類あります.
(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 
",__FUNCTION__,pos); return pNode; } i++; pMovePre = pMovePre->next; pMove = pMove->next; } printf("%s , pos=%d
",__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
",__FUNCTION__,x); return pNode; } pMovePre = pMovePre->next; pMove = pMove->next; } printf("%s , value=%d
",__FUNCTION__,x); return pNode; }