剑指Offer面试题5[从尾到头打印链表]
2017-07-19 09:33
429 查看
1. 题目描述:
输入一个链表的头结点,从尾到头打印链表每个节点的值。2. 相关知识:
循环、递归、栈3. 解答思路:
思路1,将链表压入栈中,后进先出实现从尾到头打印。思路2,采用递归的方法,但如果链表很长会导致栈溢出。
4. 代码实现:
C/C++语言实现#include "stdafx.h" #include <stack> using namespace std; struct ListNode { int val; struct ListNode *next; }; void printListFromTailToHead(ListNode* head) { stack<ListNode *> nodes; ListNode *pNode = head; while(pNode!=NULL) { nodes.push(pNode); pNode = pNode->next; } while(!nodes.empty()) { pNode = nodes.top(); printf("%d\t",pNode->val); nodes.pop(); } } void Recursive_print(ListNode* head) { if(head!=NULL) { if(head->next != NULL) { Recursive_print(head->next); } printf("%d\t",head->val); } } struct ListNode *make_node(int val) { struct ListNode *node = (ListNode*) malloc(sizeof(ListNode)); node->val = val; node->next = NULL; return node; } int _tmain(int argc, _TCHAR* argv[]) { struct ListNode *head = NULL; struct ListNode *pNode = NULL; struct ListNode *node = NULL; node = make_node(1); head = node; pNode = node; node = make_node(2); pNode->next = node; pNode = node; node = make_node(3); pNode->next = node; pNode = node; node = make_node(4); pNode->next = node; pNode = node; Recursive_print(head); printListFromTailToHead(head); return 0; }
相关文章推荐
- 剑指offer之面试题5:从尾到头打印链表
- 《剑指offer》【面试题5:从尾到头打印链表】
- 剑指offer面试题5:从尾到头打印链表
- 剑指offer--面试题5:从尾到头打印链表--Java实现
- 剑指Offer: 面试题5 从尾到头打印链表
- 剑指Offer(第二版)面试题6:从尾到头打印链表
- 剑指offer面试题6-从尾到头打印链表-java
- 剑指offer 面试题5 从尾到头打印链表
- 剑指offer-面试题5.从尾到头打印链表
- 剑指Offer系列-面试题5:从尾到头打印链表
- 剑指Offer学习之面试题5 : 从尾到头打印链表
- 剑指offer面试题[5]-从尾到头打印链表
- (剑指Offer)面试题5:从尾到头打印链表
- 剑指Offer面试题5(Java版):从尾到头打印链表
- 《剑指Offer》面试题五之从尾到头打印链表
- 剑指offer面试题5——链表之从尾到头打印链表
- 《剑指Offer》面试题5:从尾到头打印链表
- 《剑指Offer》面试题:从尾到头打印链表
- 剑指offer——面试题5:从尾到头打印链表
- 剑指Offer面试题6:从尾到头打印链表