转载请注明出处:http://blog.csdn.net/ns_code/article/details/25028525


剑指offer上的第五题,在九度OJ上測试通过。

时间限制:1 秒

内存限制:128 兆

题目描写叙述:

输入一个链表。从尾到头打印链表每一个节点的值。

输入:

每一个输入文件仅包括一组測试例子。
每一组測试案例包括多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完成。

-1本身不属于链表。

输出:

相应每一个測试案例,以从尾到头的顺序输出链表每一个节点的值。每一个值占一行。

例子输入:
1
2
3
4
5
-1
例子输出:
5
4
3
2
1

这里採用递归打印的方法。 

AC代码例如以下:

#include<stdio.h>
#include<stdlib.h> typedef int ElemType; typedef struct Node
{
ElemType data;
struct Node *next;
}Node,*pNode; /*
递归从尾到头打印单链表
*/
void PrintListReverse(pNode pHead)
{
if(pHead == NULL)
return;
if(pHead->next != NULL)
PrintListReverse(pHead->next);
printf("%d\n",pHead->data);
} pNode CreateList()
{
ElemType val;
pNode pHead = NULL;
pNode pCur = NULL;
do
{
scanf("%d",&val);
if(val != -1)
{
pNode pNew = (pNode)malloc(sizeof(Node));
if(pNew == NULL)
exit(EXIT_FAILURE);
pNew->data = val;
pNew->next = NULL; if(pHead == NULL)
{
pHead = pNew;
pCur = pHead;
}
else
{
pCur->next = pNew;
pCur = pCur->next;
}
}
}while(val != -1); return pHead;
} void DestroyList(pNode pHead)
{
if(pHead == NULL)
return;
pNode p = NULL;
while(pHead != NULL)
{
p = pHead->next;
free(pHead);
pHead = p;
}
}
int main()
{
pNode pHead = CreateList();
PrintListReverse(pHead);
DestroyList(pHead);
return 0;
}
/**************************************************************
    Problem: 1511
    User: mmc_maodun
    Language: C
    Result: Accepted
    Time:100 ms
    Memory:5440 kb
****************************************************************/

版权声明:本文博主原创文章。博客,未经同意不得转载。

【剑指offer】打印单列表从尾部到头部的更多相关文章

  1. 【剑指offer】单链表尾部插入一个节点

    #include <iostream> using namespace std; //链表结构体 struct ListNode { int m_Value; ListNode *next ...

  2. 剑指offer字符串列表

    字符串 面试题5:替换空格 面试题20:表示数值的字符串 面试题58:翻转字符串 面试题58(二):左旋转字符串

  3. 剑指offer数组列表

    一.数组 面试题3 : 找出数组中重复的数字 面试题3(二):不修改数组找出重复的数字 面试题4:二维数组的查找 面试题21:调整数组顺序使奇数位于偶数前面 面试题39:数组中出现次数超过一半的数字 ...

  4. 《剑指offer》面试题的Python实现

    <剑指Offer>是很多程序员面试前要看的书,但里面的算法都是基于C++实现的,最近用了三周左右时间,用Python完成了里面几乎所有的算法题,由于时间以及个人水平均有限,或许会有部分问题 ...

  5. 剑指offer题目系列三(链表相关题目)

    本篇延续上一篇剑指offer题目系列二,介绍<剑指offer>第二版中的四个题目:O(1)时间内删除链表结点.链表中倒数第k个结点.反转链表.合并两个排序的链表.同样,这些题目并非严格按照 ...

  6. 《剑指offer 第二版》题解

    剑指Offer 按题号排序 面试题 3:数组中重复的数字 面试题 4:二维数组中的查找 面试题 5:替换空格 面试题 6:从头到尾打印链表 面试题 7:重建二叉树 面试题 8:二叉树的下一个节点 面试 ...

  7. 剑指offer题解(Java版)

    剑指offer题解(Java版) 从尾到头打印链表 题目描述 输入一个链表,按从尾到头的顺序返回一个ArrayList. 方法1:用一个栈保存从头到尾访问链表的每个结点的值,然后按出栈顺序将各个值存入 ...

  8. 剑指offer刷题

    1.面试题43. 1-n整数中1出现的次数 输入一个整数 n ,求1-n这n个整数的十进制表示中1出现的次数. 例如,输入12,1-12这些整数中包含1 的数字有1.10.11和12,1一共出现了5次 ...

  9. 【剑指offer】58 - II. 左旋转字符串

    剑指 Offer 58 - II. 左旋转字符串 知识点:字符串: 题目描述 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串 ...

随机推荐

  1. 当try和finally里都有return时,会忽略try的return,而使用finally的return

    今天去逛论坛 时发现了一个很有趣的问题: 谁能给我我解释一下这段程序的结果为什么是:2.而不是:3 代码如下: class Test { public int aaa() { int x = 1; t ...

  2. 使用PageHeap.EXE或GFlags.EXE检查内存越界错误

    必先利其器之一:使用PageHeap.EXE或GFlags.EXE检查内存越界错误 Article last modified on 2002-6-3 ------------------------ ...

  3. Gradle学习之使用java plugin

    请通过下面方式下载本系列文章的Github演示样例代码:   git clone https://github.com/davenkin/gradle-learning.git     Gradle最 ...

  4. spring中bean的设计模式

    默认的是单例的. 如果不想单例需要如下配置: <bean id="user" class="..." singleton="false" ...

  5. win7+vs2008+opencv

    1.下载安装VS2008,然后直接下载opencv的windows的安装版, 2.把opencv解压出来,我的路径为:D:\Program\opencv 3.配置PATH:电脑--属性--高级系统设置 ...

  6. drupal 7 模块开发,hook_form

    因为不是系统学习,只能把每天自己学习到的东西零碎的记录下来. 一来方便自己记忆,二来可供大家查阅. 后续有精力再去做进一步的整理. 1 开发一个模块分为有下面几个文件 hook.admin.inc h ...

  7. 算法起步之Bellman-Ford算法

    原文:算法起步之Bellman-Ford算法 从这篇开始我们开始介绍单源最短路径算法,他是图算法之一,我们前面说的贪心,图的遍历,动态规划都是他的基础,单源最短路径其实说的就是图中节点到节点的最短路径 ...

  8. C++编程命名规范

    原地址:http://www.cnblogs.com/joinclear/archive/2013/02/21/2921422.html C++编程命名规范 0前言 根据多年工作经验和其它命名规范整理 ...

  9. uva10480(最小割)

    传送门:Sabotage 题意:给定多个城市的网络,每个城市之间的通信有花费,要求使得首都和最大城市之间的通信断掉的最小花费.要求输出任意一组砸掉的边. 分析:跑一遍最大流dinic后,根据最小割定理 ...

  10. poj 1011 Sticks ,剪枝神题

    木棒 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 118943 Accepted: 27429 Description 乔治拿 ...