数据结构与算法之链表
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; } }
相关文章推荐
- 算法:一元多项式的表示及相加(链表实现)-数据结构(4)
- 数据结构算法代码实现——线性表的链式表示与实现(单链表)(三 )
- 数据结构——算法之(033)(两个有序单链表合并为一个有序的单链表)
- 数据结构与算法之链表(三)单链表反转
- C语言 数据结构与算法 单向链表
- 数据结构之链表基本操作算法演示
- 数据结构及算法——单链表逆转(C语言)(不间断更新)
- JavaScript中数据结构与算法(三):链表
- 数据结构——算法之(027)( 在O(1)时间内删除链表结点)
- 算法学习之数据结构之双向链表
- 数据结构与算法 2、单向/双向链表
- 数据结构——将两个有序链表并为一个有序链表算法
- 数据结构与算法JavaScript - 链表
- 【数据结构作业二】写出单链表结点的结构体类型定义及查找、插入、删除算法,并以单链表作存储结构,实现有序表的合并
- 转:C#数据结构和算法学习系列十三----链表
- 数据结构与算法——迭代打开url问题(链表)
- 数据结构与算法之双向链表
- JavaScript数据结构与算法之链表
- 数据结构第四周项目2--建设“单链表”算法库
- JavaScript数据结构与算法Item4--链表