o(1)时间删除单链表的某个节点

    xiaoxiao2025-04-13  8

    #include <stdio.h> #include <stdlib.h> #include <string.h> struct Node{ int m_value; Node *m_nextNode; }; void deleteNode(Node** pHead,Node* toBedelNode){ if(*pHead==NULL||pHead == NULL||toBedelNode==NULL) return ; //判断是不是末尾节点,是的话从头再来,不是的话做下替换 if(toBedelNode->m_nextNode!=NULL){ Node *tmp = toBedelNode->m_nextNode;//临时指针指向后面的节点 toBedelNode->m_value = tmp->m_value;//交换 toBedelNode->m_nextNode = tmp->m_nextNode;//在把指针指向后面的后面的节点 free(tmp); tmp = NULL; }else if(*pHead == toBedelNode){ //如果就一个节点 free(toBedelNode); free(pHead); *pHead = NULL; toBedelNode = NULL; }else{ //从头遍历 Node *tmp = *pHead; while(tmp->m_nextNode!=toBedelNode){ tmp= tmp->m_nextNode; } free(tmp->m_nextNode); free(toBedelNode); toBedelNode = NULL; tmp->m_nextNode = NULL; } }
    转载请注明原文地址: https://ju.6miu.com/read-1298039.html
    最新回复(0)