《剑指Offer》面试题-从头到尾打印链表
2014-02-15 15:36
232 查看
题目描述:
输入一个链表,从尾到头打印链表每个节点的值。
输入:
每个输入文件仅包含一组测试样例。
每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。
输出:
对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。
样例输入:
样例输出:
代码(一)双链表输出:
代码(二)单链表递归输出:
输入一个链表,从尾到头打印链表每个节点的值。
输入:
每个输入文件仅包含一组测试样例。
每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。
输出:
对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。
样例输入:
1 2 3 4 5 -1
样例输出:
5 4 3 2 1
代码(一)双链表输出:
#include <stdio.h> #include <stdlib.h> typedef struct node *link; typedef struct node{ int data; link pre; link next; }Node; void print(link p){ while(p->pre){ printf("%d\n", p->data); p = p->pre; } } int main(int argc, char const *argv[]) { int data; link L = malloc(sizeof(Node)); L->pre = L->next = 0; L->data = -1; link p = L; for(; ;){ scanf("%d", &data); if(data == -1) break; link y = malloc(sizeof(Node)); y->data = data; y->next = p->next; p->next = y; y->pre = p; p = y; } print(p); return 0; }
代码(二)单链表递归输出:
#include <stdio.h> #include <stdlib.h> typedef struct node *link; typedef struct node{ int data; link next; }Node; void print(link p){ if(!p) return; if(p){ print(p->next); } printf("%d\n", p->data); } int main(int argc, char const *argv[]) { int data; link L = malloc(sizeof(Node)); L->next = 0; link p = L; for(; ;){ scanf("%d", &data); if(data == -1) break; link y = malloc(sizeof(Node)); y->data = data; y->next = p->next; p->next = y; p = y; } print(L->next); return 0; }
相关文章推荐
- 《剑指Offer》面试题-二维数组中的查找
- 程序员技术练级攻略
- 斐波那契(面向对象方法实现和规律实现两种方法)
- ios面试题(一)
- ios面试题(二)
- 黑马程序员--java中String创建几个对象
- 优秀的 Java 程序员所应该知道的 Java 知识
- 你是一名努力工作的程序员,还是懒惰的程序员?
- 写出float x 与“零值”比较的if语句——一道面试题分析
- 转:一个合格的程序员应该读过哪些书
- 程序员:放下技术情节
- 软件工程师的职业之路
- 程序员如何快速准备面试中的算法
- 周鸿祎谈程序员创业
- 程序员经营人脉的5个要点
- 网易游戏开发岗实习面试(十年广州求学路以及一个菜鸟半年多的成长之路)
- 微软面试100题系列-数组连续和最大
- 微软面试100题系列-设计包含 min 函数的栈
- 程序员屌丝如何逆袭?——公司年会后的思考
- 黑马程序员--高新技术--内省