单链表的操作

来源:互联网 发布:highcharts.js 编辑:程序博客网 时间:2024/05/22 01:54
</pre><pre name="code" class="cpp">#include <iostream>using namespace std;struct ListNode{    int m_nvalue;    ListNode* m_pNext;};void addToTail(ListNode* pHead,int value){    ListNode *pNode = new ListNode();    pNode -> m_nvalue = value;    pNode -> m_pNext =NULL;        if(pHead == NULL){        pHead=pNode;    }    else{        ListNode* pN=pHead;        while(pN->m_pNext!=NULL){            pN=pN -> m_pNext;        }        pN -> m_pNext = pNode;    }}void removeNode(ListNode* pHead,int value){    if(pHead==NULL){        return;    }    ListNode* pToBeDeleted=NULL;    if(pHead->m_nvalue==value){        pToBeDeleted=pHead;        pHead=pHead->m_pNext;            }    else{        ListNode* pN=pHead;                while(pN->m_pNext!=NULL&&pN->m_pNext->m_nvalue!=value){            pN = pN -> m_pNext;        }        if(pN -> m_pNext !=NULL && pN -> m_pNext -> m_nvalue == value ){            pToBeDeleted=pN -> m_pNext;            pN -> m_pNext =pN -> m_pNext -> m_pNext;        }    }    if(pToBeDeleted != NULL){        delete pToBeDeleted;        pToBeDeleted = NULL;    }}void print(ListNode* pHead){    if(pHead!=NULL){        ListNode* pN=pHead;        while(pN -> m_pNext != NULL){            int n = pN -> m_nvalue;            cout << n <<"-->";            pN = pN -> m_pNext;        }        cout << pN -> m_nvalue;        cout << endl;    }}void destroyList(ListNode* pHead){    if(pHead == NULL )        return;    ListNode* pN=pHead -> m_pNext;    while(pN != NULL){        delete pHead;        pHead = pN;        pN = pN ->m_pNext;        //pToBeDeleted = NULL;    }    delete pHead;    pHead = NULL;    return;}void printReverse(ListNode* pHead){    if(pHead != NULL){        stack<ListNode*> nodes ;        ListNode* pNode = pHead;        while(pNode != NULL){            nodes.push(pNode);            pNode = pNode -> m_pNext;        }        while(!nodes.empty()){            pNode = nodes.top();            nodes.pop();            cout << pNode ->m_nvalue << "-->";        }        cout << endl;    }}int main() {cout  << "test\n";ListNode* pHead=new ListNode;pHead -> m_nvalue=1;pHead -> m_pNext=NULL;for(int i = 0; i<10;i++){    addToTail(pHead,i);}//cout << pHead -> m_nvalue;print(pHead);//destroyList(pHead);removeNode(pHead,6);print(pHead);printReverse(pHead);return 0;}


test1-->0-->1-->2-->3-->4-->5-->6-->7-->8-->91-->0-->1-->2-->3-->4-->5-->7-->8-->99-->8-->7-->5-->4-->3-->2-->1-->0-->1-->


0 0