逆序输出链表的元素
2013-11-16 11:15
656 查看
逆序输出链表的元素:一般输出元素都是不改变数据结构的啦,所以要逆序输出链表的元素,先去掉将每个结点指向下一个结点改成指向上一个结点的念想先,所以,最先可以想到的就是用递归实现咯,但是递归实现有个问题,就是当元素太多的时候,会导致栈溢出,所以,我们也可以自己实现栈来存储结点的嘛,下面就用了两种方法实现.
#include <iostream> #include <stack> typedef struct Node { int m_data; Node* m_next; }Node, *List; // 逆序输出链表-递归实现 void printListInverse1(List list) { if (list) { printListInverse1(list->m_next); std::cout<<list->m_data<<std::endl; } } // 逆序输出链表-利用栈实现 void printListInverse2(List list) { std::stack<Node*> stack_noed; while(!stack_noed.empty()) { stack_noed.pop(); } // 将所有元素先push到栈中先 while(list) { stack_noed.push(list); list = list->m_next; } // 一个个出栈,然后输出 while(!stack_noed.empty()) { std::cout<<stack_noed.top()->m_data<<std::endl; stack_noed.pop(); } } // 插入元素 void insertList(List& list, int data) { if (list) { insertList(list->m_next, data); } else { Node* node = new Node; node->m_data = data; node->m_next = 0; list = node; } } int main() { Node* list = new Node; list->m_next = 0; insertList(list, 1); insertList(list, 2); insertList(list, 3); insertList(list, 4); insertList(list, 5); insertList(list, 6); // 递归方法 printListInverse1(list->m_next); // 非递归方法 printListInverse2(list->m_next); return 0; }
相关文章推荐
- C语言 将链表中的元素在同一个链表中逆序输出
- 逆序输出链表元素
- 链表元素的逆序输出
- 单链表应用——逆序输出单链表中的元素
- [华为机试练习题]24.删除链表中的重复节点、剩余节点逆序输出
- 剑指offer例题5—逆序输出链表
- 链表逆序输出(递归妙)
- 输出链表倒数第k个元素
- 删除链表中的重复节点、剩余节点逆序输出
- 剑指Offer03 逆序输出链表&链表逆序
- 链表的建立、输出、逆序
- 单链表的基本操作,正序/逆序建表(尾插法/头插法)、计算单链表长度、输出单链表内容、插入、删除,给出完整代码
- 单链表逆序输出
- 单链表逆序输出
- 递归逆序输出链表
- 编写一个循环将list容器的元素逆序输出
- 将链表逆序排列的一个程序及思考的对链表依某一元素排序方法
- 链表逆序(递归&非递归)/倒序输出链表值/用一个递增序列构建平衡二叉搜索树/用递归的方法判断数组是不是升(降)序排列
- java实现输入一个链表,反转链表后,输出链表的所有元素。
- 数据结构--单链表逆序输出