面试题 6:从尾到头打印链表

输入一个链表的头节点,从尾到头反过来打印出每个节点的值。链表节点定义如下:

1
2
3
4
5
struct ListNode 
{
int m_mKey;
ListNode *m_pNext;
}
  • 内存分配不是在创建链表时一次性完成的,由于没有闲置的内存,链表的空间效率比数组高。
  • 如果我们打算修改输入的数据,最好先问面试官是不是允许修改。
  • 典型的后进先出,可以用栈实现这种顺序。递归本质上就是一个栈结构,但有可能导致函数调用栈溢出,显然用栈基于循环实现的代码的鲁棒性要好一些。
  • 考查对循环、递归、栈 3 个相互关联的概念的理解。

Source Code