C言語によるシングルチェーンテーブルノードの削除(先頭ノード)
私は前のブログ「C言語実現シングルチェーンテーブルノードの削除(先頭に立たないノード)」で、先頭に立たないシングルチェーンテーブルでノードを削除する方法を詳しく実現しました.このブログでは、先頭に立たないシングルチェーンテーブルに変更しました.コード例のアップロード先https://github.com/chenyufeng1991/DeleteLinkedList_HeadNode.削除タイプは2種類あります.
(1)ある位置posのノードを削除する.
(2)x値がチェーンテーブルにあるか否かを判断し、存在する場合はそのノードを削除する.
コアコードは次のとおりです.
(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;
}