链表
特点
- 链表的结构简单,由指针将若干个节点连接起来形成链式结构。
- 链表是一个动态的数据结构,我们无需知道链表的长度,只需要为新节点分配空间,然后调整指针的指向,确保新的节点加入到链表中即可。空间效率比数组高。
- 链表的空间不是一次性分配完的,所以我们不需要保证链表的空间和数组的空间一样是连续的。
- 如果我们需要查找一个元素,那么我们必须从开头一个一个查找,直到最后查找到的元素,所以时间复杂度为O(n)。而数组中的元素查找我们只需要根据下标在O(1)的时间复杂度内查找到元素。
面试题:从头打印数据
importjava.util.ArrayList;
importjava.util.Stack;
public class Solution {
publicArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack=newStack<Integer>();
while(listNode!=null){
stack.push(listNode.val);
listNode=listNode.next;
}
ArrayList<Integer> list=newArrayList<Integer>();
while(!stack.isEmpty()){
list.add(stack.pop());
}
returnlist;
}
}