单链表的逆序和倒数第n个节点

来源:互联网 发布:c语言发送post请求 编辑:程序博客网 时间:2024/06/05 07:02

单链表的逆序:
这里写图片描述

Node* reverse()    {        if(_pHead == NULL)            return NULL;        if(_pHead->_pNext == NULL)            return _pHead;        Node* pCur = _pHead;        Node* pPre = NULL;        Node* pNext = NULL;        while(pCur->_pNext)        {            pNext = pCur->_pNext;            pCur->_pNext = pPre;            pPre = pCur;            pCur = pNext;        }        pCur->_pNext = pPre;        _pHead = pCur;        return _pHead;    }

倒数第n个节点:
定义两个指针,一个指向头结点p1,一个指向n-1个节点处p2,两个节点同时向后走,直到p2->_pNext == NULL时,p1就到了倒数第n个节点处。
这里写图片描述

int ReKNode(int k)    {        if(!_pHead)            return 0;        Node* firstNode = _pHead;        Node* secondNode = _pHead;        int i = 1;        for(;i < k;i++)        {            secondNode = secondNode->_pNext;        }        while(secondNode->_pNext)        {            firstNode = firstNode->_pNext;            secondNode = secondNode->_pNext;        }        return firstNode->_or;    }
原创粉丝点击