您的位置:首页 > 其它

逆向打印、销毁、查找结点之递归实现

2017-04-10 22:12 232 查看
#include<iostream>
using namespace std;
template <class T>
struct Node
{
T data;
Node<T>* pNext;
};
//逆向打印单链表
template<class T>
void PrintNodeFromTailtoHead(Node<T>* pHead)
{
if(pHead)
{
PrintNodeFromTailtoHead(pHead->pNext);
cout<<pHead->data<<endl;
}
}
//逆向摧毁链表中的各个节点
template<class T>
void destroyList(Node<T>* &pHead)//这里必须是引用或者二级指针
{
if(pHead)
{
destroyList(pHead->pNext);
delete pHead;
pHead=NULL;
}
}
//在单链表中逆向查找数据为data的节点
template<class T>
Node<T>* FindNode(Node<T>* pHead,T data)
{
if(pHead)
{
Node<T>* pNode=FindNode(pHead->pNext,data);
if(pNode)
return pNode;
if(pHead->data==data)
return pHead;
}
return NULL;

}
int main()
{
Node<int>* p1=new Node<int>;
Node<int>* p2=new Node<int>;
Node<int>* p3=new Node<int>;
p1->data=1;
p2->data=2;
p3->data=3;
p1->pNext=p2;
p2->pNext=p3;
p3->pNext=NULL;
//PrintNodeFromTailtoHead(p1);
//destroyList(p1);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: