算法学习记录三(C++)--->从尾到头打印链表每个节点的值
来源:互联网 发布:淘宝电热水器 编辑:程序博客网 时间:2024/04/29 23:59
描述
- 输入一个链表,从尾到头打印链表每个节点的值。
思路
对于这种颠倒顺序的问题,我们应该就会想到栈,后进先出。所以,这一题要么自己使用栈,要么让系统使用栈,也就是递归。注意链表为空的情况。时间复杂度为O(n
示例一 展示每个节点的逆序打印 (栈–>C)
// 从尾到头打印链表,使用栈 void RPrintList(ListNode * pHead) { std::stack<ListNode *> s; ListNode * pNode = pHead; while(pNode != NULL) { s.push(pNode); pNode = pNode->m_pNext; } while(!s.empty()) { pNode = s.top(); printf("%d\t", pNode->m_nKey); s.pop(); } }
示例一 展示每个节点的逆序打印 (递归–>C)
// 从尾到头打印链表,使用递归 void RPrintList(ListNode * pHead) { if(pHead == NULL) { return; } else { RPrintList(pHead->m_pNext); printf("%d\t", pHead->m_nKey); } }
示例二 本题用栈实现(C++)
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/// 栈的方式/*class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { // 初始化栈 stack<int>temp; vector<int>res; // 往栈里面push while(head){ // 入栈 temp.push(head->val); head = head->next; } // 从栈里面进行取出数据 push_back可以理解为OC里面的addObject while(temp.size()){ // 每次都是从栈顶拿数据 res.push_back(temp.top()); // 出栈 temp.pop(); } return res; }};*/
示例二 本题用递归实现(C++)
// 递归方法一class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { if(head == NULL)return{}; if(head->next == NULL) return {head->val}; vector<int>res = printListFromTailToHead(head->next); res.push_back(head->val); return res; }};*/// 递归方法二class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { vector<int>res; if(head != NULL){ res = printListFromTailToHead(head->next); res.push_back(head->val); } return res; }};
阅读全文
1 0
- 算法学习记录三(C++)--->从尾到头打印链表每个节点的值
- C语言实现 从尾到头打印链表每个节点的值(链表学习 二)
- 从尾到头打印链表每个节点的值。
- 从尾到头打印链表每个节点的值。
- 从尾到头打印链表每个节点的值
- 题目三:输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表的头结点,从尾到头反过来打印每个节点的值。
- 输入一个链表的头结点,从尾到头反过来打印每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值
- 输入一个链表,从尾到头打印链表每个节点的值。
- 输入一个链表,从尾到头打印链表每个节点的值。
- Codeforces 833B
- 时间转换c++题解
- String类型数字始终保留两位小数
- C语言入门第五篇,输入
- String转成Date类型,操作年月加减
- 算法学习记录三(C++)--->从尾到头打印链表每个节点的值
- 【设计模式】适配器模式
- C#的Winform多语言实现(resx文件)
- 士兵杀敌(五)NSOJ
- tomcat里的server.xml基本配置
- JavaEE Spring 学习(快速的用myeclipse来创建Spring config.xml),从简单开始(一)
- 每日笔记
- laravel中的命名,资源路由,路由分组
- 博客声明!!!