Java-链表
1.链表作为一种数据存储结构,它不同于数组的特点是,数组可以用一个下标号直接访问,而链表不能直接访问到数据项,必须使用数据之间的关系来定位,就是沿着这个元素的链一直向下寻找。但不同链表可以解决一些数组中查找、插入、删除等效率低等问题。
2.几种链表:单链表、双端链表、有序链表、双向链表、有迭代器的链表。
单链表:
1.只能在链表头插入、删除数据项,通过遍历链表显示它的内容。
2.Link类:包含数据和一个引用,next,这里不需要初始化next字段
LinkList类:只包含 对链表中第一个链结点的引用,first,不必须赋初值。唯一永久信息,用来定位所有其他链结点。
3.基本方法:insertFirst() 、deleteFirst()、displayList()
查找和删除指定链结点:find()、delete()
双端链表:
1.对比单链表,新增了 对最后链结点的引用,即可以访问链表尾
2.firstLastList类,它有两个项,first 和 last
3.新增方法 insertLast(),在表尾插入一个新链结点
链表效率:
表头插入和删除:O(1)
查找和删除指定链结点:O(N)
但链表还是比数组快一些,因为链表插入和删除不需要移动任何东西,效率高;链表需要多少就可以用多少内存,也可以扩展到所有可用内存,数组创建时大小就固定了。
抽象数据类型:
ADT,一种考虑数据结构的方式,着重做了什么,而忽略是怎么做的
栈和队列都是ADT的例子。
有序链表:
1.链表中数据是按照关键值有序排列的,删除操作一般是在链表头进行。对比有序数组,其插入速度要快一些。
2.sortrdList类,first、next、current、previous
3.基本方法:insert() 、remove()、displayList()
4.效率:O(N)
5.表插入排序 listInsertionSort
双向链表:
1.允许向前、向后遍历整个链表,并可以从表尾删除。
随之带来的缺点就是一个链结点增加到有4个链结点引用,占空间同时插入删除时操作复杂一些了。
2.doublyLinkedList类
3.插入
删除
迭代器:
1.包含对数据结构中数据项的引用,并用来遍历这些结构的对象。在某些链结点上执行操作。
2.如何使用:创建一个链表,然后创建一个和链表相关联的迭代器对象。
3.迭代器同链表项关联,它总是指向链表中的一些链结点,但不等同于链表或是链结点。

浙公网安备 33010602011771号