从尾到头打印链表--《剑指offer》
题目:非常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》的更多相关文章
- 从尾到头打印链表——剑指Offer
https://www.nowcoder.net/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tqId=11156&tPage= ...
- 3、从尾到头打印链表------------>剑指offer系列
题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 分析 要了解链表的数据结构: val属性存储当前的值,next属性存储下一个节点的引用. 要遍历链表就是不断找到当前节点的nex ...
- 《剑指offer》从尾到头打印链表
本题来自<剑指offer> 从尾到头打印链表 题目: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路: 方案一:首先遍历到尾部,然后从尾部进行到头值进行操作,后进先 ...
- 【Java】 剑指offer(5) 从尾到头打印链表
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个链表的头结点,从尾到头反过来打印出每个结点的值.结点定义如下: ...
- 【剑指offer】06从尾到头打印链表,C++实现
本文是原创文章,转载请注明出处! 0.前言 # 本文为牛客网<剑指offer>刷题笔记 1.题目 # 输入一个链表,从尾到头打印链表每个节点的值 2.思路 # 不改变链表结构的情况下,首先 ...
- 剑指Offer - 九度1511 - 从尾到头打印链表
剑指Offer - 九度1511 - 从尾到头打印链表2013-11-29 21:08 题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例.每一组测试案例 ...
- JS 剑指Offer(四) 从尾到头打印链表
题目:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 首先定义一下链表中的节点,关于链表这个数据结构在另外一篇文章中会详细讲 function ListNode(val) { t ...
- 菜鸟刷题路:剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表 class Solution { public int[] reversePrint(ListNode head) { Stack<Integer&g ...
- 力扣 - 剑指 Offer 06. 从尾到头打印链表.md
题目 剑指 Offer 06. 从尾到头打印链表 思路1(递归) 首先先遍历整个脸表,计算出链表的长度(用于初始化数组).然后进行递归,从链表头部递归到尾部,这期间什么都不做,直到递归到最后一个节点的 ...
- 剑指Offer面试题:4.从尾到头打印链表
一.题目:从尾到头打印链表 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. 到解决这个问题肯定要遍历链表.遍历的顺序是从头到尾的顺序,可输出的顺序却是从尾到头.也就是说第一个遍历到的结 ...
随机推荐
- 控件风格19种,必须倒背如流——其实就是控件所拥有的能力,即有条件使用VCL框架所提供的(功能)代码
{ New TControlStyles: csNeedsBorderPaint and csParentBackground. These two ControlStyles are only ap ...
- 理解javascript中的for语句
程序实现中经常要用到循环语句,其中for循环是多数语言都有的.在javascript中,for循环有几种不同的使用情况,下面就分别来讲述我的理解. 第一种:(通常情况,循环执行相关操作) var ob ...
- 用log(N)的解法实现数值的整数次方
// // main.m // c++test // // Created by andyyang on 6/3/13. // Copyright (c) 2013 andyyang. All rig ...
- JS - 全屏滚动
下载地址:http://www.lanrentuku.com/js/quanping-1141.html
- Oracle左连接、右连接示例
建表: create table a ( id ), name ) ); create table b ( name ), age ) ); create table c ( name ), dept ...
- rac各节点实例需设置为相同的一些参数
RAC Parameters That Require Identical Settings • ACTIVE_INSTANCE_COUNT • ARCHIVE_LAG_TARGET • COMPAT ...
- Vmdk文件如何使用,vmdk导入虚拟机VMware8.0教程
一.打开虚拟机VMware Workstation8.0,点击新建虚拟机. 二.进入虚拟机向导,选择自定义. 三.这里保持默认即可. 四.这里选择“我以后安装操作系统”. 五.这里选择Windows ...
- Mysql 官方Memcached 插件初步试用感受 - schweigen - ITeye技术网站
Mysql 官方Memcached 插件初步试用感受 - schweigen - ITeye技术网站 Mysql 官方Memcached 插件初步试用感受
- gcc -D 传值给代码,默认值为1
gcc -D 传值给代码,默认值为1 -D 参数可以给代码中的宏打开一扇门.简单的代码#include <stdio.h> #ifdef WHO #define NAME "jo ...
- Codeforces Round #309 (Div. 2) C
题意: 就是给出总共同拥有k种颜色.每种颜色有ki种,排列必须满足第i+1种的最后一种颜色必须在第i种最后一种颜色的后面,其它颜色任意.总共同拥有多少种排列点的方法. 分析: 如果d[i]表示前i种的 ...