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.迭代器同链表项关联,它总是指向链表中的一些链结点,但不等同于链表或是链结点。

posted @ 2021-02-07 22:18  Xiarsu  阅读(126)  评论(0)    收藏  举报