C/C++用递归的方法求链表逆序

这种方法太费空间和时间,没有我前一篇写的那程序方便,不过这方法直接

其实我认为递归和栈都是一个道理,只不过递归是函数自己创建一个超级栈,控制的时候需要注意一点,而栈是自己创建的栈,好控制流程。

 

/*

此方法仅用来学习递归和栈,不适合实用,至少我是用它来练习学习栈了,呵呵

*/

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;
}

你可能感兴趣的:(C/C++用递归的方法求链表逆序)