16 反转链表

#include <iostream>
#include "list.h"
ListNode* ReverseList(ListNode* pHead)
{
    ListNode* pReverseHead = NULL;
    ListNode* pNode = pHead;
    ListNode* pPrev = NULL;

    while(pNode != NULL)
    {
        ListNode* pNext = pNode->m_pNext;

        //链表反转之后的头结点
        if(pNext == NULL)
            pReverseHead = pNode;

        pNode->m_pNext = pPrev;

        pPrev = pNode;
        pNode = pNext;
    }

    return pReverseHead;
}

// ====================测试代码====================
ListNode* Test(ListNode* pHead)
{
    printf("===The original list is: ===\n");
    PrintList(pHead);

    ListNode* pReversedHead = ReverseList(pHead);

    printf("===The reversed list is: ===\n");
    PrintList(pReversedHead);

    return pReversedHead;
}

// 输入的链表有多个结点
void Test1()
{
    ListNode* pNode1 = CreateListNode(1);
    ListNode* pNode2 = CreateListNode(2);
    ListNode* pNode3 = CreateListNode(3);
    ListNode* pNode4 = CreateListNode(4);
    ListNode* pNode5 = CreateListNode(5);

    ConnectListNodes(pNode1, pNode2);
    ConnectListNodes(pNode2, pNode3);
    ConnectListNodes(pNode3, pNode4);
    ConnectListNodes(pNode4, pNode5);

    ListNode* pReversedHead = Test(pNode1);

    DestroyList(pReversedHead);
}

// 输入的链表只有一个结点
void Test2()
{
    ListNode* pNode1 = CreateListNode(1);

    ListNode* pReversedHead = Test(pNode1);

    DestroyList(pReversedHead);
}

// 输入空链表
void Test3()
{
    Test(NULL);
}

int main(void)
{
    Test1();
    Test2();
    Test3();

    return 0;
}

结果

QQ截图20160627105352.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 解法:
    qmss阅读 199评论 0 0
  • 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。 解法1:记录3个结点:当前处理结点...
    3e1094b2ef7b阅读 265评论 0 0
  • 题目描述 输入一个链表,反转链表后,输出链表的所有元素。 代码实现 主要思路 1、首先我们需要3个结点,第一个是当...
    _minimal阅读 203评论 0 0
  • 题目:输入一个链表,反转链表后,输出链表的所有元素。 思路1:用列表保存链表中的所有元素,然后将其进行反转,新建链...
    minningl阅读 242评论 0 0
  • 回一次,都看到城市在变化。新房建设,老屋拆除。 在归来再也不能少年心…… 邻居年纪最大的老人故去,去串过门的阿姨因...
    梦海蓉阅读 299评论 0 0