题目:非常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. linux内核系统调用--sendfile函数

    在apache,nginx,lighttpd等webserver其中,都有一项sendfile相关的配置,在一些网上的资料都有谈到sendfile会提升文件传输性能,那sendfile究竟是什么呢?它 ...

  2. AJAX - 类型“System.Web.UI.UpdatePanel”不具有名为“FileUpload”的公共属性。

    类型“system.web.ui.updatepanel” 不具有名为“***”的公共属性,其实原因很简单.就是少了一个<ContentTemplate></ContentTempl ...

  3. 管道是如何处理HTTP请求的?

    管道是如何处理HTTP请求的? 我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但是就具体的实现来说,由于其中涉及很多对象的交互,我想很 ...

  4. Spark Sreaming与MLlib机器学习

    Spark Sreaming与MLlib机器学习 本来这篇是准备5.15更的,但是上周一直在忙签证和工作的事,没时间就推迟了,现在终于有时间来写写Learning Spark最后一部分内容了. 第10 ...

  5. nohup命令与&区别,jobs,fg,bg,Ctrl-Z、Ctrl-C、Ctrl-D

    &方式: Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台:          /usr/local/my ...

  6. 基于Hadoop技术实现的离线电商分析平台(Flume、Hadoop、Hbase、SpringMVC、highcharts)

    离线数据分析平台是一种利用hadoop集群开发工具的一种方式,主要作用是帮助公司对网站的应用有一个比较好的了解.尤其是在电商.旅游.银行.证券.游戏等领域有非常广泛,因为这些领域对数据和用户的特性把握 ...

  7. 基于visual Studio2013解决面试题之0302链表中找倒数k项节点

     题目

  8. HDU 4974 A simple water problem(贪心)

    HDU 4974 A simple water problem pid=4974" target="_blank" style="">题目链接 ...

  9. 显示器 Linux 性能 18 (一个命令行工具传递)

    对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并执行是多么的不easy.基于此原因. ...

  10. http2.0笔记

    二进制分帧层 定义了如何封装 HTTP 消息并在客户端与服务器之间传输 http2.0的消息传输特点: 流 已建立的连接上的双向字节流 消息 与逻辑消息对应的完整的一系列数据帧 帧 http2.0通信 ...