1 链表的概念及结构
链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。
链表的结构
链表就是一个个的节点组成的,一个节点分为两部分(val和next),val用来保存数据,叫做数据域,而next用来保存下一个节点的地址,节点与节点之间连接就是靠next。
实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:
单向、双向
带头、不带头
循环、非循环
而我将描叙的是单向无头非循环链表和双向无头非循环链表,这篇文章先讲单向无头非循环链表
关于链表的结构解释:
1 单向 双向
通过名字可以依稀知道,单向就是整个链表只能朝一个方向
2 带头、不带头
所谓的带头和不带头就是在链表的前面有没有一个固定的head节点
不带头的话,只要节点在第一个位置,就是整个链表的头节点,是可变化的。
带头的话,head节点一直存在,next一直指向第一个有效节点。
3 循环、非循环
相关代码
、无头单向非循环链表实现
public class SingleLinkedList {
//头插法
public void addFirst(int data);
//尾插法
public void addLast(int data);
//任意位置插入,第一个数据节点为0号下标
public void addIndex(int index,int data);
//查找是否包含关键字key是否在单链表当中
public boolean contains(int key);
//删除第一次出现关键字为key的节点
public void remove(int key);
//删除所有值为key的节点
public void removeAllKey(int key);
//得到单链表的长度
public int size();
public void display();
public void clear();
}