题目:非常easy,就是题目,将链表从尾到头打印出来

可能我们首先想到的是将链表进行遍历,将之前的訪问的数据进行保存,最后进行反向输出,但是保存数据的空间是个问题;或者是我们将整个链表进行反向操作,将整个链表进行逆置,但是我们仅仅是进行打印操作而已,改变链表不合适吧...

事实上这时候应该想到了,用栈:既然是逆置,和栈的功能不就不谋而合吗,后进先出,进行反向打印。

//2014-5-18
//反向输出链表
#include <iostream>
#include <cstdlib>
#include <stack> using namespace std; typedef struct Node
{
int data;
struct Node *next; /* 指向下个节点 */
} Node, *LinkNode; void Create(LinkNode &head)
{
head = (LinkNode) malloc(sizeof(Node));
head->next = NULL;
} void Insert(LinkNode &head, int i)
{
if(head -> next == NULL)
{
LinkNode p = (LinkNode) malloc(sizeof(Node));
p->data = i;
p->next = head->next;
head->next = p;
return;
}
LinkNode p = head;
while(p->next != NULL)
{
p = p->next;
}
LinkNode q = (LinkNode) malloc(sizeof(Node));
q->data = i;
q->next = p->next;
p->next = q;
//free(q);
return;
} void OppoLink(const LinkNode &L)
{
if(L == NULL)
return;
LinkNode p = L->next;
stack<int> node;
while(p != NULL)
{
node.push(p->data);
p = p->next;
} while(!node.empty())
{
cout << node.top() << " ";
node.pop();
}
cout << endl;
} int main()
{
LinkNode L; Create(L);
for(int i = 0; i < 10; i++)
{
Insert(L, i);
} OppoLink(L);
return 0;
}

输出例如以下:

书中也是如我这般的,只是对于栈的处理不同,我是使用stack<int> node;进行数据存储,而书中则是使用节点存储,只是我想这应该差点儿相同吧...(详细我也不知道,假设有什么看法的希望指出)

书中给出例如以下一段话:

这个我倒是真没想到,只是依照提示递归实现了:

void OppoLink(LinkNode L)
{
if(L!=NULL)
{
if(L->next != NULL)
{
OppoLink(L->next);
}
cout << L->data << " ";
}
}

在调用的时候用OppoLink(L->next),由于我创建的链表有个头结点,当然,它里面的数据非常意外。。。

只是对于递归大家肯定知道,层数深了的话,后果非常可怕,所以我想用栈应该会更好一些。

O(∩_∩)O欢迎不吝赐教啦....

从尾到头打印链表--《剑指offer》的更多相关文章

  1. 从尾到头打印链表——剑指Offer

    https://www.nowcoder.net/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tqId=11156&tPage= ...

  2. 3、从尾到头打印链表------------>剑指offer系列

    题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 分析 要了解链表的数据结构: val属性存储当前的值,next属性存储下一个节点的引用. 要遍历链表就是不断找到当前节点的nex ...

  3. 《剑指offer》从尾到头打印链表

    本题来自<剑指offer> 从尾到头打印链表 题目: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路: 方案一:首先遍历到尾部,然后从尾部进行到头值进行操作,后进先 ...

  4. 【Java】 剑指offer(5) 从尾到头打印链表

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个链表的头结点,从尾到头反过来打印出每个结点的值.结点定义如下: ...

  5. 【剑指offer】06从尾到头打印链表,C++实现

    本文是原创文章,转载请注明出处! 0.前言 # 本文为牛客网<剑指offer>刷题笔记 1.题目 # 输入一个链表,从尾到头打印链表每个节点的值 2.思路 # 不改变链表结构的情况下,首先 ...

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

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

  7. JS 剑指Offer(四) 从尾到头打印链表

    题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 首先定义一下链表中的节点,关于链表这个数据结构在另外一篇文章中会详细讲 function ListNode(val) { t ...

  8. 菜鸟刷题路:剑指 Offer 06. 从尾到头打印链表

    剑指 Offer 06. 从尾到头打印链表 class Solution { public int[] reversePrint(ListNode head) { Stack<Integer&g ...

  9. 力扣 - 剑指 Offer 06. 从尾到头打印链表.md

    题目 剑指 Offer 06. 从尾到头打印链表 思路1(递归) 首先先遍历整个脸表,计算出链表的长度(用于初始化数组).然后进行递归,从链表头部递归到尾部,这期间什么都不做,直到递归到最后一个节点的 ...

  10. 剑指Offer面试题:4.从尾到头打印链表

    一.题目:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 到解决这个问题肯定要遍历链表.遍历的顺序是从头到尾的顺序,可输出的顺序却是从尾到头.也就是说第一个遍历到的结 ...

随机推荐

  1. Delphi中运行时改变panel的位置及大小(通过wm_SysCommand来实现)

    procedure TForm1.pnl1MouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Int ...

  2. Go语言 关于go error处理风格的一些讨论和个人观点(上)

    原创文章.转载请注明出处:server非业余研究-sunface 近期看谷歌go group里面有非常多讨论go error处理风格的问题,颇有启示.如今跟大家分享一下.首先请看一个提问: Hi fo ...

  3. 微信JSAPI支付(比较详细) 关于getRrandWCPayRequest:fail_invalid appid 错误

    原文:微信JSAPI支付(比较详细) 关于getRrandWCPayRequest:fail_invalid appid 错误 首先微信支付需注册  微信公从平台开发 和 微信支付商户平台 关于4个密 ...

  4. Windows server 2008 R2实现多用户远程连接

    原文 Windows server 2008 R2实现多用户远程连接 经常使用远程桌面的朋友可能会注意到,Windows server 2008 R2中,远程桌面最多只允许两个人远程连接,第三个人就无 ...

  5. 用js实现插入排序

    话不多说,直接上代码 html源码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...

  6. KMP poj

    题目来自:http://www.cnblogs.com/wuyiqi/archive/2012/01/06/2315188.html KMP算法开始是判断字符串b是否是字符串a的子串,朴素的算法是枚举 ...

  7. linux配置本地tomcat应用80端口转发

    场景: 本地部署tomcat到8080端口,并期望本地访问80端口来访问本地tomcat. 结论: 使用linux下的iptables工具实现端口转发功能. 具体为 现取得root权限 执行iptab ...

  8. Android菜鸟的成长笔记(2)——第一个Android应用

    原文:Android菜鸟的成长笔记(2)--第一个Android应用 上一篇:Android菜鸟的成长笔记(1)--Anddroid环境搭建从入门到精通 在上一篇Android菜鸟的成长笔记(1)中我 ...

  9. 给c++程序员的一份礼物——常用工具集

    给c++程序员的一份礼物——常用工具集 [声明]如需复制.传播,请附上本声明,谢谢.原文出处:http://morningspace.51.net/,moyingzz@etang.com 所谓&quo ...

  10. 如何用jsp页面生成随机的验证数字码

    checkNum.jsp <%@ page language="java" import="java.util.*,java.sql.*" pageEnc ...