数学建模社区-数学中国

标题: +那位高手帮忙用C写一个将链表反转的递归算法!+ [打印本页]

作者: solucky    时间: 2004-10-18 14:40
标题: +那位高手帮忙用C写一个将链表反转的递归算法!+
<>   帮忙用C写一个将<FONT color=#f70909>链表反转</FONT>的<FONT color=#ff0000>递归</FONT>算法!# j& C  c- h" r4 u9 z8 U  I0 S
   比如:# {0 G" o8 `& q4 E  J, \
   表原数据这:1 2 3 47 J# w3 s: p  q" [$ m# B
   计算后的数据为:4 3 2 1</P>
, }, @8 y; \0 t9 L" Y% a! m8 O<>先谢了!</P>
2 `% t) t: L; B7 f+ D<>祝大家天天快乐!</P>
作者: ilikenba    时间: 2004-10-18 17:48
<>我说说算法的思路,下面的是思路可以用具体的语言实现:</P><>   首先定义你的链表结构体,和一个可以存储链表结构的栈。</P><>  main()</P><>{  </P><> searchnext;</P><> make;//从栈里面依次弹出节点形成一个新的链表,就是所求的链表!</P><>}</P><>function searchnext;</P><>{</P><>  read;//读入一个链表节点的函数。</P><>  store;//将这个节点的信息压入栈。</P><>  if( islast ==true)//如果本节点是最后的节点。</P><>{</P><>    store;//将这个节点的信息压入栈.</P><>}</P><>else</P><>{</P><>    searchnext;</P><>}</P><>}</P>
作者: xShandow    时间: 2004-10-18 19:15
<>这个很简单啊。你用两个链表,相互替换一下,再把替换后的表的元素付给第一个链表不就可以实现倒序了吗?</P>
作者: ilikenba    时间: 2004-10-18 21:45
<>什么叫相互替换?说的具体一些!</P>
作者: 无名    时间: 2004-10-20 20:03
<>preNode = NULL;</P>
% h* f0 F3 _1 c6 R% u6 L<>node = list-&gt;Fitst;</P>. U" q6 L( c0 \3 k: }" |0 U3 g5 K3 a
<>while(node != NULL )</P>. c" a$ `" O4 L2 d' b
<>{</P>" q. o( p" x7 n: @5 H- I7 }
<>    tempNode = node-&gt;next;</P># B6 N8 F/ W4 d7 V3 n; \% R
<>    node-&gt;Next = preNode;</P># j. R7 |' c4 I9 f
<>    preNode = node;</P>* L  D+ g$ v0 I* I
<>    node = tempNode;</P>5 [. U& z! x! P) Q9 W/ u9 t
<>}</P>
+ c0 y( c! \7 \" c  W& A4 A. q
[此贴子已经被作者于2004-10-20 20:09:40编辑过]

作者: ilikenba    时间: 2004-10-20 20:51
<>楼上的方法是将链表的前后的指针交换了位置,值得推荐,但是没有用递归呀!</P>
作者: 无名    时间: 2004-10-21 09:00
<>不好意思没有看见递归,循环改递归最容易不过啦</P><>void Reverse(List * list, Node * preNode)</P><>{</P><>    Node * node = list-&gt;First();</P><>    if(node != NULL &amp;&amp; node-&gt;next != NULL)</P><>    {</P><>        Node * tempNode = node-&gt;next;</P><>        node-&gt;Next = preNode;</P><>        list-&gt;SetHead(tempNode);</P><>        Reverse(list, node);</P><>    }</P><>}</P><>调用时只要:Reverse(list, NULL);</P>
作者: realyoyy    时间: 2004-11-7 21:56
标题: 求助
<>楼上的code SetHead是什么没说</P><>  </P>
作者: ilikenba    时间: 2004-11-9 22:09
<>设置节点的头指针吧!</P>




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5