您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法之链表

2017-08-09 11:13 288 查看

链表

特点

链表的结构简单,由指针将若干个节点连接起来形成链式结构。

链表是一个动态的数据结构,我们无需知道链表的长度,只需要为新节点分配空间,然后调整指针的指向,确保新的节点加入到链表中即可。空间效率比数组高。

链表的空间不是一次性分配完的,所以我们不需要保证链表的空间和数组的空间一样是连续的。

如果我们需要查找一个元素,那么我们必须从开头一个一个查找,直到最后查找到的元素,所以时间复杂度为O(n)。而数组中的元素查找我们只需要根据下标在O(1)的时间复杂度内查找到元素。

面试题:从头打印数据

/**
*    public class ListNode {
*        int val;
*        ListNode next = null;
*
*        ListNode(int val) {
*            this.val = val;
*        }
*    }
*
*/
importjava.util.ArrayList;
importjava.util.Stack;
public class Solution {
publicArrayList<Integer> printListFromTailToHead(ListNode listNode) {
Stack<Integer> stack=newStack<Integer>();
//队列和栈是一对好基友,从尾到头打印链表,当然离不开借助栈的帮忙啦
//所以,先把链表里的东西,都push到一个栈里去,然后按顺序把栈里的东西pop出来,就这么简单
while(listNode!=null){
stack.push(listNode.val);
listNode=listNode.next;
}

ArrayList<Integer> list=newArrayList<Integer>();
while(!stack.isEmpty()){
list.add(stack.pop());
}
returnlist;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: