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

原创 2006年05月29日 00:30:00

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

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

 

/*

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

*/

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++ 递归和非递归实现链表逆序

测试环境:vs2010  windows7 逆序分别采用递归调用和链表头插法实现逆序。 具体代码如下: #include #include using namespace std; class...

逆序遍历链表--递归与非递归方法

package 链表上; import java.util.Stack; /** * 初始化链表节点 * @author buder_cp * * @param */ class Lis...

链表逆序输出(递归妙)

四种方式实现--从尾到头输出链表   方法一:借用栈倒序输出链表   方法二:先翻转链表,再顺序输出   方法三:递归实现,一个字妙,两个字很妙,三个字太妙了   方法四:用数...

【数据结构】递归实现链表逆序

关于本篇文章,先参见本人之前的一篇博客,与之相关: http://blog.csdn.net/kuzuozhou/article/details/7451289 另外,参考: http://bl...

链表逆序输出(递归妙)

四种方式实现--从尾到头输出链表   方法一:借用栈倒序输出链表   方法二:先翻转链表,再顺序输出   方法三:递归实现,一个字妙,两个字很妙,三个字太妙了   方法四:用数组实现   方...

算法设计和数据结构学习_(单链表的递归逆序)

单链表的逆序方法有很多种,求职过程中会碰到类似的题。比如进栈出栈;变量链表放入数组后利用数组的逆序重构链表;遍历链表时每次访问的节点都指向它的前节点;递归调用等。本次实验是用递归的方法实现单链表的逆序...

单链表逆序:通过递归和循环实现。

单链表逆序          第二个题目是很经典的“单链表逆序”问题。很多公司的面试题库中都有这道题,有的公司明确题目要求不能使用额外的节点存储空间,有的没有明确说明,但是如果面试者使用了额外的...

逆序输出单链表的值——深深地被递归折服

要求逆序输出单链表的值,例如: 1.null 不打印 2. 1->2->3->5->null ,打印结果为 5 4 3 2 1 哈哈,遇到这个题目时,我的第一想法就是,这...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)