这种方法太费空间和时间,没有我前一篇写的那程序方便,不过这方法直接
其实我认为递归和栈都是一个道理,只不过递归是函数自己创建一个超级栈,控制的时候需要注意一点,而栈是自己创建的栈,好控制流程。
/*
此方法仅用来学习递归和栈,不适合实用,至少我是用它来练习学习栈了,呵呵
*/
void RevList_recursion(pNode *l)
{
//pNode p;
pNode q=*l;
if((q->Next!=NULL)&&(q!=NULL))
RevList_recursion(&(q->Next));
if(q!=NULL)
{
AddList(l,q);
}
}
void AddList(pNode *l,const pNode pE)
{
pNode p=*l;
if ((*l)==NULL)
{
(*l)=pE;
(*l)->Next=NULL;
return ;
}
if (p==pE)
return;
while (p->Next!=NULL)
{
p=p->Next;
if (pE==p)
return ;
}
pE->Next=NULL;
p->Next=pE;
}