2.3.1 ✨线性表的链式表示
线性表的链式存储结构是用一组任意的存储单元来存放线性表的数据元素,这组单元可以是连续的,也可以是不连续的
对每个数据元素ai,除了存储其本身的信息之外,还需存储一个指示其直接后继存放位置的指针。这两部分信息组成数据元素a;的存储映像,称为结点(Node)。如图 ⇡ 所示,它包括两个域,其中存储数据元素信息的域称为数据域,存储直接后继存放位置的域称为指针域。
结点类的泛型定义☛ 数据域为data,指针域为next。构造器有两个,区别是参数的不同。
- 🎀 有一个参数的构造器,用参数n来初始化next'指针域,数据域不存储有效的用户数据
- 🎀 有两个参数的构造器,根据形参obj和n分别初始化数据域data和指针域next
public class Node<T>{
T data;
Node<T> next;
public Node(Node<T> n){
next = n;
}
public Node(T obj, Node<T> n){
data = obj;
next = n;
}
public T getData{
return data;
}
public Node<T> getNext(){
return next;
}
}
2.3.2 ✨单链表的实现
线性表链式存储结构泛型类的定义:在linkList类中有两个成员变量。
- 🧲 一个是指向头节点的指针head,习惯称为头指针
- 🧲 一个是length,用来存放单链表的长度
线性表单链表存储结构描述
public class linkList<T> {
private Node<T> head; //头指针
private int length; //单链表的长度
public linkList(){} //构造一个空链表
public Node<T> getHead(){} //获取链表头结点地址
public boolean add(T obj, int pos){} //在链表中插入一个新元素
public T remove(int pos) {} //删除链表中某个元素
public T value(int pos)P{} //获取链表中某个元素
public int find(T, o