两种方法实现从尾到头打印链表--栈和递归
2013-09-08 21:02
344 查看
#include <iostream> #include <stack> using namespace std; struct Node { int num; Node* pNext; }; Node* AddToList(Node* p,int num) { Node* pHead=NULL; Node* ptmp=(Node*)malloc(sizeof(Node)); ptmp->num=num; ptmp->pNext=NULL; if(p==NULL) pHead=ptmp; else { pHead=p; while(p->pNext!=NULL) p=p->pNext; p->pNext=ptmp; } return pHead; } void Print(Node* p) //递归实现 { if(p==NULL) return; if(p->pNext!=NULL) { Print(p->pNext); cout<<p->num<<endl; } else cout<<p->num<<endl; } void PrintByStack(Node* p) //栈实现 { std::stack<Node*> nodes; Node* pTmp; while(p!=NULL) { nodes.push(p); p=p->pNext; } while(!nodes.empty()) { pTmp=nodes.top(); cout<<pTmp->num<<endl; nodes.pop(); } } void main() { Node* p=NULL; p=AddToList(p,1); p=AddToList(p,2); p=AddToList(p,3); p=AddToList(p,4); p=AddToList(p,5); p=AddToList(p,6); p=AddToList(p,7); p=AddToList(p,8); cout<<"//////////////////////"<<endl; Print(p); cout<<"//////////////////////"<<endl; PrintByStack(p); }
相关文章推荐
- 两种方法实现:输入一个链表,从尾到头打印链表每个节点的值
- 两种方法实现:输入一个链表,从尾到头打印链表每个节点的值
- 剑指offer_面试题5_从尾到头打印链表(栈和递归实现)
- 从尾到头打印链表(五种方法包括链表翻转、递归、栈、容器逆序)
- python实现反向打印单向链表的两种方法
- [面试] 从尾到头打印链表-递归实现
- 链表面试题--两种方法逆序打印单链表(栈和递归)
- [面试] 从尾到头打印链表-递归实现
- 递归求集合子集(两种方法实现(数组,链表))
- 剑指offer_面试题5_从尾到头打印链表(栈和递归实现)
- 从头到尾打印链表,两种方法:用栈先进后出,另一种为递归。
- 剑指offer 面试题5 从尾到头打印链表(递归实现)
- 合并两个已排序的链表(递归方法实现)
- 两种方法实现队列---顺序表和链表
- java实现——005从尾到头打印链表
- 剑指offer:从尾到头打印链表代码实现
- n的k次方,使用递归的两种实现方法
- 链表翻转的图文讲解(递归与迭代两种实现)
- C语言经典算法(八)——递归实现斐波那契数列的两种方法
- 递归实现遍历文件夹的两种方法