首页 > 代码库 > C++算法之 反转单链表
C++算法之 反转单链表
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点,链表节点定义为:
struct ListNode
{
int m_nValue;
ListNode* m_pNext;
};
算法思路:
链表 1-->2-->3-->4-->5
建立一个 pPrev节点,而且为空节点; pPrev = NULL;再建立一个节点pNode = pHead; 再建立第三个节点pNext = pNode->m_pNext;
pNext的作用:用来保存pNode后面一个的节点,防止链表在中间断开,然后pPrev与pNode往下遍历:
看代码:
ListNode* ReverseList(ListNode* head){ ListNode* pNode = head; ListNode* pPrev = NULL; while (pNode != NULL) { ListNode* pNext = pNode->m_pNext;//保存下一个节点的值 pNode->m_pNext = pPrev;//把当前pNode的下一个节点指向pPrev pPrev = pNode;//此时pPrev向后移动指向此时的pNode pNode = pNext;//而pNode也向后移动,指向刚才保存的pNext; } return pPrev;// return pReversedHead;}
完整代码:
// ReverseList.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>using namespace std;struct ListNode{ int m_nValue; ListNode* m_pNext; ListNode() { } ListNode(int i):m_nValue(i),m_pNext(NULL) { }};void AddToTail(ListNode* pHead, int value){ ListNode* pNew = new ListNode(); pNew->m_nValue = http://www.mamicode.com/value;>
代码可以运行测试通过!
C++算法之 反转单链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。