题目:非常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. 1.1.0-学习Opencv与MFC混合编程之---全屏截图,保存为BMP图像(并增加快捷键)

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961677 Ø  添加全屏截图菜单项,菜单项的属性如下; Ø  为该菜单项建立类向导. 编辑消息处理函 ...

  2. ubuntu 10.04安装qtcreator并汉化

    最近最的项目中需要做出来一个带有界面的demo,所以想到了用qt做个简单的demo! 于是在ubuntu上安装了qt,很简单apt-get apt-get install qtcreator 大概几百 ...

  3. MySQL 暂时文件夹

    MySQL数据文件夹/data/mysql所在的上层文件夹/data磁盘空间不足导致MySQL启动失败,所以清理了/data文件夹下除了mysql子文件夹外的其它无用文件夹.重新启动发现还是失败.检查 ...

  4. 使用JDBC处理数据库大容量数据类型

    在本文将介绍如何使用JDBC操作MySQL数据库对于大容量数据类型的读取.在之前的博客中已经介绍了如何使用JDBC来操作数据库对各种数据的增删改查,那么大容量数据类型的数据操作又为何不同呢. 原因在于 ...

  5. 结构体的序列和还原(使用Move方法)

    // 定义结构体 typeTmyRec= recordname:string[10];password:string[10];end; function RawToBytes(const AValue ...

  6. javascript属性一览

    getElementsByTagName() 方法可返回带有指定标签名的对象的集合. getElementsByName() 方法可返回带有指定名称的对象的集合. getAttribute() 方法返 ...

  7. 每天一个JavaScript实例-推断图片是否载入完毕

    <!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  8. 分享一些免费的,开源的邮件server软件

    因为企业的须要,我们非常可能须要架设一个邮件server,微软的Exchange太复杂?GOOGLE出来的又收费!头大了吧,OK,贾芸斐在这里给大家分享推荐几个免费的开源的邮件server软件.希望你 ...

  9. 英特尔的VT-d技术是什么?

    VT-d技术: 我们知道对于服务器而言,很重要的一个组成部分就I/O,CPU的计算能力提升虽然可以更快地处理数据,但是前提是数据能够顺畅的到达CPU,因此,无论是存储,还是网络,以及图形卡.内存等,I ...

  10. Mac与Window之间的共享文件

    Mac访问Window: Finder 菜单 “前往” ,然后“连接服务器”,在服务器地址输入 smb://windows主机名或ip地址/共享名(前提window已设置共享文件) Windows访问 ...