链表的结构为:
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 }