/**
*
* 单链表:一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。
*
* 1、链接存储方法
* 链接方式存储的线性表简称为链表(Linked List)。
链表的具体存储表示为:
* ① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)
* ② 链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个结点值的同时,还必须存储指示其后继结点的地址(或位置)信息(称为指针(pointer)或链(link))
注意:
链式存储是最常用的存储方式之一,它不仅可用来表示线性表,而且可用来表示各种非线性的数据结构。
2、链表的结点结构
┌──┬──┐
│data│next│
└──┴──┘
data域--存放结点值的数据域
next域--存放结点的直接后继的地址(位置)的指针域(链域)
注意:
①链表通过每个结点的链域将线性表的n个结点按其逻辑顺序链接在一起的。
②每个结点只有一个链域的链表称为单链表(Single Linked List)。
【例】线性表(bat,cat,eat,fat,hat,jat,lat,mat)的单链表示如示意图
3、头指针head和终端结点指针域的表示
单链表中每个结点的存储地址是存放在其前趋结点next域中,而开始结点无前趋,
故应设头指针head指向开始结点。
注意:
链表由头指针唯一确定,单链表可以用头指针的名字来命名。
【例】头指针名是head的链表可称为表head。
终端结点无后继,故终端结点的指针域为空,即NULL。
4、单链表的一般图示法
由于我们常常只注重结点间的逻辑顺序,不关心每个结点的实际位置,可以用箭头来表示
链域中的指针,线性表(bat,cat,fat,hat,jat,lat,mat)的单链表就可以表示为
下图形式。
package jxau.blueDot.liyixiang;
/**
*
* @author lyx
* @下午10:15:16
* @TODO:
* 数据结构——单链表
*/
public class Link {
public int iData; //数据项
public double dData; //数据项
public Link next; //下一节点
public Link(int iData, double dData) {
super();
this.iData = iData;
this.dData = dData;
}
public void displayLink(){
System.out.println("{"+iData + ":" + dData + "}");
}
}
转载于:https://my.oschina.net/liyixiangBlog/blog/270698