剑指Offer面试题:4.从尾到头打印链表建议收藏

一题目:从尾到头打印链表代码实现采用两种方法实现:(1)不修改原列表,使用stack的方式实现(2)修改原列表,对元列表逆序两种方法都在下面的代码中:

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

一 题目:从尾到头打印链表

题目:输入一个链表的头结点,从尾到头反过来打印每个结点的值。

  剑指Offer面试题:4.从尾到头打印链表建议收藏

代码实现

  采用两种方法实现:

  (1) 不修改原列表,使用stack的方式实现

  (2)修改原列表,对元列表逆序

  两种方法都在下面的代码中:

struct Node
{
    int data;
    Node* pNext;
};

class ListEx
{
private:
    Node *m_pHead;
    Node *m_pTail;
public:
    ListEx()
    {
        m_pHead = NULL;
        m_pTail = NULL;
    }
    ~ListEx()
    {
        Node *pNode = m_pHead;
        Node *pNext = NULL;
        while(pNode)
        {
            pNext = pNode->pNext;
            delete pNode;
            pNode = pNext;
        }

        m_pHead = NULL;
        m_pTail = NULL;
    }
    void add(int data)
    {
        Node *pNode = new Node;
        pNode->data = data;
        pNode->pNext = NULL;

        if (!m_pHead)
        {
            m_pTail = m_pHead = pNode;
        }
        m_pTail->pNext = pNode;
        m_pTail = pNode;
    }

    Node* GetHead() {return m_pHead;}

    // 改变链表的内容,将其逆序
    void ReserveList()
    {
        m_pTail = m_pHead;
        Node *p1 = m_pHead;
        Node *p2 = p1->pNext;
        p1->pNext = NULL;        //关键位置
        Node *pTemp = NULL;     
        while (p1 && p2)
        {
            pTemp = p2->pNext;   // 关键位置
            p2->pNext = p1;
            p1 = p2;
            p2 = pTemp;
        }

        m_pHead = p1;
    }
};

// 从尾打印链表
void PrintList(Node *pHead)
{
    stack<int> NodeStack;
    Node *pNode = pHead;
    while (pNode)
    {
        NodeStack.push(pNode->data);
        pNode = pNode->pNext;
    }
    
    while (!NodeStack.empty())
    {
        cout << NodeStack.top();
        NodeStack.pop();
    }
    cout << endl;
}

void main()
{
    ListEx list;
    list.add(1);
    list.add(2);
    list.add(3);
    list.add(4);
    list.add(5);
    list.add(6);
    list.add(7);
    list.add(8);
    list.add(9);

    Node *pHead = list.GetHead();
    cout << "不修改原列表,使用stack方法:" << endl;
    PrintList(pHead);
    list.ReserveList();

    cout << "修改原列表,将原列表逆序:" << endl;
    pHead = list.GetHead();
    PrintList(pHead);
    return;
}

剑指Offer面试题:4.从尾到头打印链表建议收藏

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120171.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 在线客服系统源码(PHP完全开源版)

    在线客服系统源码(PHP完全开源版)在线客服系统软件使开发和运营团队能够高速协作,因此要求源码系统能够快速响应业务变化,并快速提供出色的客户和员工服务体验。  在线客服源码演示及获取:https://gitee.com/wang_li989/kfxt  客服沟通问题加起来会成为重大的财务损失。您的组织快速有效地解决这些问题的能力直接影响到未满足的SLA义务和客户体验,这两个方面对公司的成功至关重要。在线客服系统是企业战略的核心组成部分。通过减少识别和解决问题所需的时间,您的组织可以提高客户忠诚度,最大限度地延长正常运行时间,并提供始终如

    2022年7月19日
    34
  • 基于51单片机步进电机控制[通俗易懂]

    基于51单片机步进电机控制[通俗易懂]实现功能:1、用矩阵键盘设定电机目标转速及旋转方向,范围100~300转/分;2、测量、显示电机实际转速和方向(正转显示“P”,反转显示“N”);从实现功能上分析,软件可以分解3个功能模块:1,步进电机控制模块2,矩阵键盘输入模块3,显示输出模块步进电机工作原理步进电机通过输入脉冲信号进行控制,即电机的总转动角度由输入脉冲总数决定,而电机的转速…

    2022年5月31日
    33
  • clion 2021 永久激活码破解方法

    clion 2021 永久激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    62
  • linux文件共享 samba_文件共享服务

    linux文件共享 samba_文件共享服务Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成;SMB(ServerMessagesBlock,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务;SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统,

    2022年9月24日
    2
  • 安装并使用EVE模拟器

    安装并使用EVE模拟器本文提供的软件及相关镜像有:VMWareEVECommunityVMversion2.0.3-95Wireshark-win64-2.6.4CiscoIOL镜像(路由器、交换机)CRTWindowsXP镜像安装步骤如下:1.进行VMWare的安装a.在安装包文件夹内选择“VMware-workstation-full-15.0.0-10134415”的应用程…

    2022年6月12日
    45
  • 黑盒测试用例设计方法一(等价类划分、边界值分析)

    黑盒测试用例设计方法一(等价类划分、边界值分析)文章目录黑盒测试用例设计方法黑盒测试用例设计方法概述等价类划分法边界值分析法黑盒测试用例设计方法黑盒测试用例设计方法概述测试数据选择等价类划分法边界值分析法测试步骤设计因果图法判定表法正交实验法功能图法场景法等价类划分法等价类划分法原理把程序的输入域划分成若干份,然后从每个部分中选取少数代表性数据作为测试用例每一类的代表性数据在测试中的作用等价于这一类中的其他值,如果某一类中的一个例子发现了错误,这一等价类中的其他例子也能发现同样的错误。反之,如果某一类中的一个例子没有

    2022年6月3日
    32

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号