首页 > 代码库 > 从尾到头输出链表

从尾到头输出链表

链表的结构为:

struct ListNode

{

  int m_nKey;

  ListNode* next;

};

从头到尾的输出链表对于大家来说都是比较简单的,但是从尾到头应该怎么做好呢?

其实可以这样想,从头到尾输出链表,并把链表的数据存放到栈中,当遍历到链表尾部的时候,再从栈中输出数据,此时得到的值就是从尾到头输出的值了,

但是在这样的实现中,需要额外去维护一个栈,也是挺麻烦的,这时你可以想一下,栈的实现其实和递归的实现时一样的,那么可不可以不要用栈,而是使用递归实现呢

这样的话更容易理解也不用额外去维护栈呢?这是可行的。

 1 void ReverseList(ListNode* pListHead) 2 { 3         if(pListHead != NULL) 4         { 5                6                 if (pListHead->m_pNext != NULL) 7                 { 8                         ReverseList(pListHead->next); 9                 }10 11                12                 printf("%d", pListHead->m_nKey);13         }14 }

 

从尾到头输出链表