2.3线性表的链式存储结构线性表的链式存储结构一链表2.3.1线性表:(ag, ai,, ai, ai1,",an-1)映射结点结点包含有元素值和前后继结点的地址信息1/85
线性表: (a0,a1,.,ai,ai+1,.,an-1) 结点包含有元素值和前后继结点的地址信息 结点 映射 1/85
如果每个结点只设置一个指向其后继结点的指针成员,这样的链表称为线性单向链接表,简称单链表。头结点开始结点尾结点head(a)单链表如果每个结点中设置两个指针成员,分别用以指向其前驱结点和后继结点,这样的链表称之为线性双向链接表,简称双链表头结点开始结点尾结点dhead-aean-1(b)双链表2/85
如果每个结点只设置一个指向其后继结点的指针成员,这样的链表 称为线性单向链接表,简称单链表。 头结点 开始结点 尾结点 head a0 a1 . an-1 ∧ (a)单链表 如果每个结点中设置两个指针成员,分别用以指向其前驱结点和后 继结点,这样的链表称之为线性双向链接表,简称双链表。 头结点 开始结点 尾结点 dhead a0 a1 . an-1 ∧ (b)双链表 2/85
2.3.2单链表头结点尾结点开始结点head每个结点为LinkNode<E>泛型类对象,包括存储元素的数据成员data(设其数据类型为E)和存储后继结点的指针成员next。1/单链表结点泛型类classLinkNode<E>f E data;LinkNode<E>next;1/构造方法publicLinkNode()next=null;}包//重载构造方法public LinkNode(E d)data=d;next=null;3/85
每个结点为LinkNode<E>泛型类对象,包括存储元素的数据成员 data(设其数据类型为E)和存储后继结点的指针成员next。 class LinkNode<E> //单链表结点泛型类 { E data; LinkNode<E> next; public LinkNode() //构造方法 { next=null; } public LinkNode(E d) //重载构造方法 { data=d; next=null; } } 头结点 开始结点 尾结点 head a0 a1 . an-1 ∧ 3/85
单链表泛型类LinkListclass<E>//单链表泛型类public class LinkListclass<E>/存放头结点LinkNode<E> head;/ /构造方法publicLinkListclass()//创建头结点head=new LinkNode<E>();//头结点next成员置为nexthead.next=null;71/基本运算算法7head4/85
单链表泛型类LinkListClass<E> public class LinkListClass<E> //单链表泛型类 { LinkNode<E> head; //存放头结点 public LinkListClass() //构造方法 { head=new LinkNode<E>(); //创建头结点 head.next=null; //头结点next成员置为next } //基本运算算法 } head ∧ 4/85
结点引用方式:L.head L.head.nexthead单链表对象L:5/85
head . ∧ 单链表对象L: L.head L.head.next 结点引用方式: 5/85