- 单链表
- 基础知识:
- 链表:是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点存到下一个节点的地址。链表可分为单向链表和双向链表。
- 一个单项链表包含两个值:当前节点的值和一个指向下一个节点的链接
- 基础知识:
-
-
- 一个双向链表有3个值:数值、向后的节点链接、向前的节点链接
- 其中链表类似于ArrayList,是一种常用的数据容器,链表的优点是增加和删除的操作效率更高,但是查找和修改的操作效率较低
- 使用链表的情况:1.需要通过循环迭代来访问列表中的某些元素;2.需要频繁的在列表的开头、中间、末尾等位置进行添加和删除元素操作
- 循环迭代:循环提供了一种快速和简单的方式去做一些重复的事。其中JavaScript中提供的循环语句如下:for语句、do...while语句、while语句、label语句、break语句、continue语句、for...in语句、for...of语句
- for语句:一个for循环会一直重复执行,直到指定的循环条件为false. for(初始化数据;判断条件语句;控制条件语句){ 循环体语句;}
- do...while语句:语句一直重复直到指定条件求值得到假值(false)。基本格式:do{循环体语句;}while(条件判断语句);
- while语句:一个 while语句只要指定的条件求值为真(true)就会一直执行它的语句块。 基本格式:while(条件判断语句){循环体语句; 条件控制语句;}
- label语句:一个 label提供了一个让你在程序中其他位置引用它的标识符。
- break语句:用来终止循环,switch,或者是链接到lable语句。
- 其中使用带lable的break时,它会终止指定的带标记(lable)的语句;
- 使用不带lable的break时,它会终止当前所在的循环,并把控制权交回给这些结构后面的语句。
- continue语句:用来执行(跳过代码块剩余部分并进入下一个循环)一个while、do...while、for或者label语句
- for...in语句:循环一个指定的变量来循环一个对象所有可枚举的属性,javaScript会为每一个不同的属性执行指定的语句。
- for...of语句:在可迭代对象上创建一个循环,对值得每一个独特属性调用一次迭代。
- 链表继承了AbstractSequentialList 类(AbstractSequentialList继承自AbstractList,是LinkedList的父类);
- 链表实现了 Queue 接口,可作为队列使用(Queue 是java中实现队列的接口)。
- 链表 实现了 List 接口,可进行列表的相关操作。
- 链表实现了 Deque 接口(双向队列:支持插入删除元素的线性集合。),可作为队列使用。
- 链表 实现了 Cloneable 接口(标记型接口,里面没有任何方法和属性),可实现克隆。
- 链表 实现了 java.io.Serializable 接口,即可支持序列化,能通过序列化去传输。
- 链表类位于java.util包中,使用前需要引入它,如:
-
import java.util.LinkedList;
- 创建一个简单的链表实例://引入LinkedList类
-
LinkedList<String > sites =new LinkedList<String>();
- 在列表开头添加元素://使用addFirst()在头部添加元素,Wiki是添加的自定义的名称
sites.addFirst("Wiki");
- 在列表结尾添加元素://使用addLast()在尾部添加元素
sites.addLast("Wiki");
- 在列表开头移除元素://使用removeFirst()移除头部元素
sites.removeFirst();
- 在列表结尾移除元素://使用removeLast()移除尾部元素
sites.removeLast();
- 获取列表开头或者结尾处的元素://使用getFirst()和getLast();
-