链表:增加结点与删除节点

来源:互联网 发布:战争潜力知乎 编辑:程序博客网 时间:2024/06/07 02:46
#include <iostream>using namespace std; struct ListNode{    int value;    ListNode* next;};void add_to_tail(ListNode** pHead,int value){    //由于会改变头指针,因此必须把pHead参数设为指向指针的指针,    //否则除了这个函数pHead仍然是一个空指针     ListNode* pNew = new ListNode();    pNew->value = value;    pNew->next = NULL;    if(pHead == NULL){        *pHead = pNew;    }else{        ListNode* pNode = *pHead;        while(pNode->next != NULL){            pNode = pNode->next;        }        pNode->next = pNew;    }}void remove_node(ListNode** pHead,int value){    if(pHead == NULL || *pHead == NULL){        return;    }    ListNode* pToBeDeleted = NULL;    if((*pHead)->value == value){        pToBeDeleted = *pHead;        *pHead = (*pHead)->next;        }else{        ListNode* pNode = *pHead;        while(pNode->next != NULL  && pNode->next->value != value){            pNode = pNode->next;        }        if(pNode->next != NULL && pNode->next->value == value){            pToBeDeleted = pNode->next;            pNode->next = pNode->next->next;        }    }    if(pToBeDeleted != NULL){        delete pToBeDeleted;        pToBeDeleted = NULL;    }}int main(int argc, char** argv) {       return 0;}
0 0
原创粉丝点击