链表
链表应该是面试时被提及最频繁的数据结构。链表的结构很简单,它由若干个结点连接成链状结构。链表的创建、结点插入、结点删除等操作都只需要20行左右的代码就能实现,其代码量适合面试。而像哈希表、有向图灯复杂数据结构,实现他们的一个操作需要代码量很大。
另外,链表是一种动态的数据结构,其操作需要对指针进行操作,因此应聘者需要良好的编程功底才能完成完整的操作链表的代码。而且链表的数据结构很灵活,可以用链表设计灵活的题目。
链表是一种动态的数据结构是指,在创建链表时,无需知道链表的长度。当插入一个结点时,我们只需要为新结点分配内存,然后调整指针的指向来确保新结点被链接到链表当中。内存分配不是在创建链表时一次性完成,而是每添加一个结点分配一次内存。由于没有闲置的内存,链表的空间效率比数组高。
面试题5:从尾到头打印链表
要求:输入一个链表的头结点,从未到头反过来打印出每个节点的值。
由于是反向输出,很符合栈的特点。所以可以用栈来解决。另外,注意递归在本质上就是一个栈结构,所以也可以使用递归来解决。