STL链表反向输出实例
来源:互联网 发布:logo设计软件绿色版 编辑:程序博客网 时间:2024/04/27 21:00
C++ STL list反向输出实例
给定一个单向链表,从尾到头输出其每个值。
代码:
#include <iostream>#include "stdio.h"#include <list>#include <stack>using namespace std;//从尾到头输出list--1.递归方法 void list_reverse1(list<int> &mylist, list<int>::iterator &it)//传递引用比传值副本更高效 { if(mylist.empty()) //判断list是否为空,如果没有判断即便链表为空后面仍会执行一遍cout return; it++; if(it != mylist.end()) { list_reverse1(mylist, it); } cout<<*(--it)<<endl; /** *这里要注意一点是it是对象的引用或者理解为对象指针, *所以对它的值得修改(it++) 会影响递归的其他轮回。 *所以最后输出时要进行--it */ } /** *递归有个通病,就是当递归次数过长,比如这里的链表过长时,可能会导致函数调用栈溢出. *可以用下面循环的方式实现避免这个问题. */ //从尾到头输出list--2.栈+循环方法 /** * list是从头到尾循迹的,要将其从尾到头输出, 会想到stack栈结构, *所以可以先把list一一取出放到stack暂存.然后后面只需要迭代输出stack即可. *这个思想同样可以用于list的反转 */void list_reverse2(list<int> &mylist){ stack<int> mystack; if(mylist.empty()) //判断list是否为空,如果没有判断即便链表为空后面仍会执行一遍cout return; list<int>::iterator it = mylist.begin(); while(it != mylist.end()) { mystack.push(*it); it++; } while(!mystack.empty()) { cout<<mystack.top()<<endl; mystack.pop(); }}int main(){ list<int> mylist; for(int i=0; i < 5; i++) mylist.push_back(i); list<int>::iterator it = mylist.begin(); //逆序输出 cout<<"逆序输出" <<endl; //list_reverse1(mylist, it); list_reverse2(mylist); //顺序输出 cout<<"顺序输出" <<endl; for(it = mylist.begin(); it != mylist.end(); it++) cout<<*it<<endl; return 0;}
运行输出:
逆序输出43210顺序输出01234--------------------------------Process exited after 0.01161 seconds with return value 0请按任意键继续. . .
如果是头指针版本的链表,反向输出链表的思想一样,只是代码是用指针来处理,一样要用到递归。
markdown插入整段代码时发现只有第一行被当做是代码怎么破:
选定其他的代码,继续摁一下ctrl+k插入代码键就ok了。
0 0
- STL链表反向输出实例
- 链表反向输出
- 反向输出一个链表
- 反向输出一个链表(链表逆置)
- 剑指offer 面试题5 反向输出链表
- 链表的创建和正向反向输出
- 剑指offer --反向输出链表与输出链表的倒数第k个元素
- 【STL】反向迭代器
- [面试] 递归 反向输出链表 ,定义一个求字符串长度的函数, 反向输出字符串. 不能再函数内部定义变量.
- C语言:链表的反向输出(反转链表+栈结构)
- 动态库中输出STL类的实例和类中包含STL对象
- 链表的反向迭代和正向迭代输出
- 【剑指offer-解题系列(3)】从尾到头,反向输出链表
- 反向输出字符串
- 字符串反向输出
- 经典反向输出字符串
- C语言:反向输出
- 反向输出字符串
- 变量与类的 声明和 定义 在头文件中的使用
- web前端性能优化总结
- 字符串常量指针、常量指针和指针常量区别
- 初始化servletConfig
- 《Nodejs开发指南》中遇到的问题2
- STL链表反向输出实例
- 双色球
- 放鸡蛋问题
- 为原计划而努力
- 轻松搞定面试中的二叉树题目
- Oracle:SQL语句--对表的操作——添加一个字段 (即 添加 一列)
- C和C++到底有什么关系
- Oracle:SQL语句--对表的操作—— 删除字段(即删除列)
- SAP ABAP摸爬滚打记