面试题5 从头到尾打印链表
2015-02-03 18:31
197 查看
九度链接:http://ac.jobdu.com/problem.php?pid=1511
题目1511:从尾到头打印链表
题目描述:
输入一个链表,从尾到头打印链表每个节点的值。
输入:
每个输入文件仅包含一组测试样例。
每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。
输出:
对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。
样例输入:
样例输出:
思路:
逆序联想到后进先出-->栈,或者递归。考虑到效率,优先选择栈。
题目1511:从尾到头打印链表
题目描述:
输入一个链表,从尾到头打印链表每个节点的值。
输入:
每个输入文件仅包含一组测试样例。
每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点。第一行是链表第一个节点的值,依次类推。当输入到-1时代表链表输入完毕。-1本身不属于链表。
输出:
对应每个测试案例,以从尾到头的顺序输出链表每个节点的值,每个值占一行。
样例输入:
1 2 3 4 5 -1
样例输出:
5 4 3 2 1
思路:
逆序联想到后进先出-->栈,或者递归。考虑到效率,优先选择栈。
#include <stdio.h> #include <stack> using namespace std; typedef struct ListNode { int data; ListNode* next; }ListNode; void printList(ListNode *phead) { if (phead->next == NULL) return; phead = phead->next; stack<int> Stack; int n = 0; while (phead != NULL) { Stack.push(phead->data); phead = phead->next; n ++; } while (!Stack.empty()) { if (n -- != 0) printf("%d\n", Stack.top()); else printf("%d", Stack.top()); Stack.pop(); } } int main() { ListNode *head = new ListNode(); ListNode *p = head; int d; scanf("%d", &d); while (d != -1) {//创建链表 ListNode *tmp = new ListNode(); tmp->data = d; tmp->next = NULL; p->next = tmp; p = p ->next; scanf("%d", &d); } printList(head); return 0; }
相关文章推荐
- 剑指offer 面试题5——从头到尾打印链表
- 面试题5:从头到尾打印链表
- 面试题5-从头到尾打印链表
- 单链表面试题(二)从头到尾打印单链表
- 剑指offer编程题Java实现——面试题5从头到尾打印链表
- 剑指offer--面试题6:从头到尾打印链表
- 《剑指Offer》面试题-从头到尾打印链表
- 剑指offer面试题5 从头到尾打印链表(java)
- 剑指offer面试题之从头到尾打印链表
- 剑指Offer-【面试题05:从头到尾打印链表】
- 《剑指offer》面试题5 从头到尾打印链表
- 面试题5 从头到尾打印链表
- 面试题5:从头到尾打印链表
- 剑指offer面试题5 从头到尾打印链表(java)
- 【剑指offer】面试题6:从头到尾打印链表
- 《剑指offer》(面试题5):从头到尾打印链表
- 《剑指Offer》面试题-从头到尾打印链表
- [牛客网,剑指offer,python] 从头到尾打印链表