zoukankan      html  css  js  c++  java
  • 单链表逆置

    题目:输入一个单向链表,将该单链表逆置。

    举例:原来链表为1->2->3->4->5翻转为5->4->3->2->1

    链表结点定义如下:

    struct ListNode
    {
        int m_nKey;
        ListNode* m_pNext;
    };

    答:

    #include "stdafx.h"
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    struct ListNode
    {
        int m_nKey;
        ListNode* m_pNext;
    };
    
    //构造链表
    void CreateList(ListNode *&pHead)
    {
        fstream fin("list.txt");
        ListNode *pNode = NULL;
        ListNode *pTmp = NULL;
        int data;
        fin>>data;
        while (data)
        {
            pNode = new ListNode;
            pNode->m_nKey = data;
            pNode->m_pNext = NULL;
            if (NULL == pHead)
            {
                pHead = pNode;
                pTmp = pNode;
            }
            else
            {
                pTmp->m_pNext = pNode;
                pTmp = pNode;
            }
    
            fin>>data;
        }
    }
    
    //翻转单链表
    void ReverseLink(ListNode *&pHead)
    {
        if (NULL == pHead)
        {
            return;
        }
        ListNode *pNode = pHead;
        ListNode *Prev = NULL;
        ListNode *pNext = NULL;
        while (NULL != pNode)
        {
            pNext = pNode->m_pNext;
            if (NULL == pNext)
            {
                pHead = pNode;
            }
            pNode->m_pNext = Prev;
            Prev = pNode;
            pNode = pNext;
        }
    }
    
    void PrintList(ListNode *pHead)
    {
        if (NULL == pHead)
        {
            return;
        }
        ListNode *pNode = pHead;
        while (NULL != pNode)
        {
            cout<<pNode->m_nKey<<"  ";
            pNode = pNode->m_pNext;
        }
        cout<<endl;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        ListNode *pHead = NULL;
        cout<<"原来的链表:";
        CreateList(pHead);
        PrintList(pHead);
        ReverseLink(pHead);
        cout<<"翻转的链表:";
        PrintList(pHead);
    
        return 0;
    }

    运行界面如下:

    建造链表的list.txt文件如下:

    12 11 10 9 8 7 6 5 4 3 2 1 0
  • 相关阅读:
    Windows10 JDK1.8安装及环境变量配置
    Adobe Premiere Pro 2020破解教程
    如何消除任务栏系统更新失败的图标
    微服务架构-Gradle下载安装配置教程
    第十五次-语法制导的语义翻译
    第十四次——算符优先分析
    第09组 Alpha冲刺(4/4)
    第09组 Alpha冲刺(3/4)
    第09组 Alpha冲刺(2/4)
    第09组 Alpha冲刺(1/4)
  • 原文地址:https://www.cnblogs.com/venow/p/2657559.html
Copyright © 2011-2022 走看看