栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java语言描述--单链表的设计与实现--数据结构

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java语言描述--单链表的设计与实现--数据结构

数据结构--单链表的设计与实现

首先了解其定义:
单链表:如果每个结点只设置一个指向其后结点的指针成员,这样的链表称为线性单向链接表,简称单链表。
何为指针成员呢,在链表中每个结点不仅包含有元素本身的信息(称为数据成员),而且包含有元素之间的逻辑关系的信息。
指针成员:一个结点包含有后续结点的地址信息或者前驱结点的地址信息,称为指针成员。
与C语言当中的指针类似,C语言当中的指针存放的是地址值;但Java中并不存在指针的概念,这里的指针成员存放的是后继结点或者是前驱结点的引用,引用存放的仍为其相对应的地址值。概念不同,功能相同。

了解了单链表的概念之后来看相应的图解:
单链表只有一个头结点,且在初始化头结点时,是不存放数据的,只有一个指向为null的next结点:


对于每个结点head、s、s1……等我没有直接使用方框代替,我的理解是,每一个new出的结点对象,默认包含其对应构造方法内的全部内容,当你想往构造方法找添加内容时,对应的对象所分配的内存空间也更多。这里使用椭圆内嵌方框也是以我自己的理解进行构图。对于我对构造函数的理解,详见上一期,文章内含有我对构造函数的理解及顺序表的实现。

接着再进行了解,单链表个成员之间是如何建立连接的,具体的建立连接的方式有两种:
头插法建表:相应图解为:


图片文字有点小,可以放大看。过程就全在图中喽

相应代码:

//用头插法建立单链表
    public void GreatLoneList(Object[] a){
        LoneListOne s;
        for (int i = 0; i < a.length; i++) {
            s = new LoneListOne<>(a[i]);
            s.next = head.next;
            head.next = s;
        }
    }
 

尾插法建表:相应图解为:

相应代码:

//用尾插法建表
    public void GreatLoneListEnd(Object[] a){
        LoneListOne s,t;
        t = head;
        for (int i = 0; i < a.length; i++) {
            s = new LoneListOne<>(a[i]);
            t.next = s;
            t = s;
        }
        t.next = null;
    }
 

用尾插法更符合我们平常的操作,其代码也更简洁

了解了单链表的实现原理及建表方法后,我们就可以着力将整个单链表的所有基本模块实现喽:
本次实现单链表需要创建3个类,各类具体功能在后讲解 一.编写一个类建立结点结构:

class LoneListOne{
    Object data;
    LoneListOne next;
    //建立单链表头结点模型
    public LoneListOne(){
        next = null;
    }
    //建立单链表数据结点模型
    public LoneListOne(Object d){
        data = d;
        next = null;
    }
}
 

头结点初始时是不存放数据的,只有一个空指针成员null。

  1. 二.编写另一个类,初始化头结点及实现单链表的基本功能(增删改查):