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

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

  

代码实现

  采用两种方法实现:

  (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;
}

转载于:https://www.cnblogs.com/xiaobingqianrui/p/8808816.html

剑指Offer面试题:4.从尾到头打印链表相关推荐

  1. 剑指offer面试题[5]-从尾到头打印链表

    目描述 输入一个链表,从尾到头打印链表每个节点的值. /** *  struct ListNode { *        int val; *        struct ListNode *next ...

  2. 剑指Offer - 面试题6. 从尾到头打印链表(栈,递归,反转链表)

    文章目录 1. 题目 2. 解题 2.1 stack解题 2.2 递归 2.3 反转链表 1. 题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head ...

  3. 剑指offer 面试题5—从尾到头打印链表

    题目: 输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 考虑用栈 public void invertedList1(ListNode head) {if (head == null) {r ...

  4. 剑指offer面试题06. 从尾到头打印链表(辅助栈法)

    题目描述 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 思路 详见链接 代码 class Solution:def reversePrint(self,head:ListNod ...

  5. 剑指Offer - 九度1511 - 从尾到头打印链表

    剑指Offer - 九度1511 - 从尾到头打印链表2013-11-29 21:08 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测试案 ...

  6. 剑指offer java版 test3—从尾到头打印链表

    标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...

  7. 【剑指offer】登峰造极之从尾到头打印链表

    题目链接 从尾到头打印链表. 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:1254529 题目描述 /** struct ListNode { i ...

  8. 剑指offer(C++)-JZ6:从尾到头打印链表(数据结构-链表)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回). 如输入{ ...

  9. 【剑指offer-Java版】05从尾到头打印链表

    从头到尾打印链表:递归实现比较简单 注意处理异常输入:如输入指针为空 处理边界条件等即可 public class _Q05 {public static void main(String[] arg ...

  10. 剑指offer——面试题60:把二叉树打印成多行

    剑指offer--面试题60:把二叉树打印成多行 Solution1: 20180911重做.经典题目.牢记做法! /* struct TreeNode {int val;struct TreeNod ...

最新文章

  1. 【深度学习】Keras实现回归和二分类问题讲解
  2. 6.1 从分析到设计
  3. mysql查看binlog日志内容
  4. flex 底部固定_小猿圈网站页面底部固定的方法
  5. python模块datetime_Python模块-datetime
  6. ASP+Access+Dreamweaver+IIS搭建简单数据库管理系统_第一章_前言
  7. SpringBoot实现文件在线预览
  8. 使用CURL抓取https网页报错的一种解决方法
  9. 尺度空间-多尺度特征空间
  10. badboy设置中文_badboy中文手册
  11. Unified diagnostic services (UDS)
  12. 常用的背景色、文字颜色
  13. Django3在网页上生成二维码
  14. Python实现BP神经网络ANN单隐层回归模型项目实战
  15. shienblink 振动/敲击检测传感器详解
  16. html获取cookie数据,cookies数据是什么意思?
  17. 互斥锁(排它锁、独占锁、写锁、X锁)和共享锁(读锁、S锁) 自旋锁
  18. properties中文乱码快速处理
  19. 监听文本框输入开发仿新浪微博限制输入字数的textarea插件。
  20. linux服务器更改欢迎界面

热门文章

  1. 如何成为一个Linux内核开发者
  2. 报错:“-bash: git: 未找到命令”
  3. 简单递归题目分析与解答
  4. HTML下拉菜单去掉点,jQuery点击页面其他部分隐藏下拉菜单功能
  5. java父类子类顺序_java父类子类內部程序的执行顺序
  6. 便携式不锈钢管道焊接机器人_为什么越来越多的不锈钢管件用不锈钢焊管制作...
  7. alter table move与shrink space
  8. javax.xml.datatype.XMLGregorianCalendar
  9. spring3依赖包下载
  10. SQL Error: 957, SQLState: 42000 ORA-00957: duplicate column name