`
baby69yy2000
  • 浏览: 187733 次
  • 性别: Icon_minigender_1
  • 来自: 自己输入城市...
社区版块
存档分类
最新评论

[转]数据结构 用Java实现单链表

    博客分类:
  • Util
阅读更多
 
数据结构_用JAVA实现单链表

一、先创建一个节点类

    package com.vnv;

//数据结构与算法JAVA语言版-单向链表例子笔记

//定义链表节点

public class IntNode {
    public int info; // 记录信息

    public IntNode next;// 指向下一节点的指针

    public IntNode(int i) { // 创建一个节点并把它的info定义并且把它的下一个指
        // 针指向null
        this(i, null);
    }

    public IntNode(int i, IntNode n) { // 这是初使化的地点,this(i,null)就指它
        info = i;
        next = n;
    }
}


  二、再创建下单链表类

package com.vnv;

public class IntSLList {
    private IntNode head, tail; // 定义指向头和尾的指针 注:此处的head和tail是IntNode类型的变量
                                //head 引用IntNode对象实例或持有IntNode对象实例的句柄

    public IntSLList() {
        head = tail = null; // 定义一开始使head和tail都为空,定义一个空链表
    }

    public boolean isEmpty() { // 判断链表是否为空,这算法偶是佩服了!
        return head == null;
    }

    public void addToHead(int el) { // 创建头指针,该方法只用一次!
        head = new IntNode(el, head); // 此时head的指为null进而初使化,我看为
        // 了节约代码才这么写!要不也可以写成head=new IntNode(el);
        // 拥有了指向第一个元素的指针咯!
        if (tail == null) // 若只有一个元素的化那么其尾指针指向头指针
            tail = head;// 第一次初使化的时候尾也有了!头也是它尾也是它!
    }

    public void addToTail(int el) { // 添加尾指针,该方法使用多次
        if (!isEmpty()) { // 若链表非空那么将尾指针的next初使化为一个新的元素
            tail.next = new IntNode(el); // 然后将尾指针指向现在它自己的下一个元素
            tail = tail.next;
        } else { // 如果为空则创建一个新的!并将头尾同时指向它!
            head = tail = new IntNode(el);// 这句可以有多种写法
        }
    }

    public int deleteFromHead() { // 删除头并且返回它的信息
        int el = head.info;
        if (head == tail) { // 如果只有一个元素或没有元素则一律清空为空链表
            head = tail = null;
        } else
            head = head.next; // 否则就把头指针后移
        return el;
    }

    public int deleteFromTail() { // 删除尾并返回它的info
        int el = tail.info;
        if (head == tail) // 和上面一样
            head = tail = null;
        else { // 如果不是上面那种情况就把tail设置到原来tail的上一个元素
            IntNode temp; // 这个是临时的
            for (temp = head; temp.next != tail; temp = temp.next)
                // 这循环很特殊咯!
                tail = temp; // 循环的目的自己想
            tail.next = null; // 把原来的尾设置为null
        }
        return el; // 返回
    }

    public void printAll() { // 输出所有的元素竟然没用Iterator强!
        for (IntNode temp = head; temp != null; temp = temp.next)
            System.out.println(temp.info + " ");
    }

    public boolean isInList(int el) { // 判断链表内是否有元素的info与参数相等
        IntNode temp; // 有个缺陷!只能判断出离head进的那一个!有多个就不行
        for (temp = head; temp != null && temp.info != el; temp = temp.next)
            ;// 仔细理解
        return temp != null; // 这个分号的作用
    }

    public void delete(int el) { // 通过el删除元素(有缺陷)
        if (!isEmpty()) // 若非空并且只有一个元素且头元素的info和el等
            if (head == tail && head.info == el) // 那么就删除头
                head = tail = null;
            else if (el == head.info) // 若非空并且el和头元素的info相等那么删除头
                head = head.next;
            else {
                IntNode pred, temp;
                for (pred = head, temp = head.next; temp != null
                        && temp.info != el; pred = pred.next, temp = temp.next)
                    ;// 又是分号咯!判断其el是否在表内!
                if (temp != null) { // 若非空则删除元素
                    pred.next = temp.next;
                    if (temp == tail) // 若为尾则删除尾
                        tail = pred;
                    tail.next = null;
                }
            }
    }
   
    public static void main(String [] args){
        IntSLList test=new IntSLList();
        test.addToHead(3);
        test.addToTail(5);
        test.addToTail(7);
        test.addToTail(9);
        test.deleteFromHead();
        test.delete(7);
        test.printAll();
    }
}
分享到:
评论

相关推荐

    Java实现单链表以及单链表的操作.zip

    单链表是一种简单但灵活的数据结构,常用于实现各种抽象数据类型,如队列、栈和映射。本教程将深入探讨如何使用Java语言来实现单链表及其相关操作。 首先,我们来理解单链表的基本概念。单链表由一系列节点组成,每...

    Java实现单链表的基本操作

    本文将深入探讨如何使用Java语言实现单链表的基本操作,包括创建链表、插入节点、删除节点以及遍历链表等关键功能。 首先,我们需要理解单链表的概念。单链表是一种线性数据结构,其中每个元素(称为节点)包含两个...

    java实现单链表

    在这个主题中,我们将深入探讨如何使用Java来实现单链表,特别是关注如何插入元素以及如何构建链表。 单链表由一系列节点组成,每个节点包含两部分:数据元素和指向下一个节点的引用。在Java中,我们可以通过创建一...

    基于JAVA的单链表简单实现

    单链表是数据结构中最基础的一种,它是一种线性数据结构,由一系列节点(也称为元素)组成,每个节点包含两个部分:数据域和指针域。数据域存储实际的数据,而指针域则指向链表中的下一个节点。在Java中,我们可以...

    单链表的冒泡排序

    单链表的冒泡排序,热烈欢迎大家的下载,谢谢谢谢

    数据结构JAVA实现

    在这个名为“数据结构JAVA实现”的压缩包中,我们可以看到作者提供了三种重要的数据结构——链表、有序二叉树和队列的Java代码实现。 首先,让我们详细探讨链表。链表是一种线性数据结构,与数组不同,它不连续存储...

    数据结构学习之循环单链表(基本操作实现) 源码

    数据结构学习之循环单链表(基本操作实现) 数据结构学习之循环单链表(基本操作实现)

    基于java的循环单链表

    循环单链表是一种常见的数据结构,它在计算机科学和编程中有着广泛的应用。与普通单链表不同,循环单链表的最后一个元素...理解并掌握循环单链表的原理和实现,对于学习数据结构和算法以及编写高效的Java代码至关重要。

    数据结构 单链表 java图形界面实现

    在本项目中,我们主要探讨的是数据结构中的一个重要概念——单链表,以及如何使用Java语言结合图形用户界面(GUI)来实现它。单链表是一种线性数据结构,其中的元素不是顺序存储的,而是通过指向下一个元素的指针...

    JAVA单链表操作实验

    "JAVA单链表操作实验" 在本实验中,我们将实现一个基于JAVA的单链表操作实验,该实验可以实现以下三个功能:1.根据从键盘输入一串字符串自动生成一个单链表;2.根据指定元素删除相应的结点,可以一次性删除多个结点...

    数据结构顺序表+单链表+二叉树+图等等各实验总汇.rar

    在这个"数据结构顺序表+单链表+二叉树+图等等各实验总汇.rar"压缩包中,包含了多个关于基础数据结构的实验,对于计算机专业的学生来说,这些都是极其重要的学习资源。 首先,我们来看"顺序表o_o"。顺序表是一种最...

    java数据结构之单链表

    Java作为一种广泛使用的面向对象的编程语言,提供了丰富的数据结构支持。本文将深入探讨Java中的单链表,这是一种基本但至关重要的数据结构。 单链表是一种线性数据结构,其中每个元素(称为节点)包含两个部分:...

    数据结构单链表的实验报告

    数据结构中的单链表是一种基本的数据组织形式,用于存储一系列有序或无序的元素。在这个实验报告中,我们将深入探讨如何使用单链表解决实际问题,即表达式的求值。这个实验任务要求我们通过栈操作来实现双目运算符的...

    JAVA基本5种数据结构的实现。

    在Java编程语言中,数据结构是组织和管理数据的关键元素,它们提供了高效访问和操作数据的方式。...源代码文件提供了具体的实现细节,通过阅读和分析,我们可以学习到如何在Java中有效地实现和使用这些基础数据结构。

    Java单链表的实现代码

    `Java单链表的操作代码int型.rar`和`Java单链表的操作代码char型.rar`两个压缩包中可能包含了这些类的源代码示例,供学习者参考和实践。通过这些代码,你可以了解如何在实际项目中应用单链表,以及如何根据需求扩展...

    java 单链表和双向链表的实现

    本话题主要探讨两种常用的数据结构——单链表和双向链表在Java中的实现,以及相关的操作,如在头部添加节点、在尾部添加节点、遍历、逆置和删除。 首先,我们来理解单链表和双向链表的基本概念。单链表是一种线性...

    Java单链表增删改查的实现

    在Java编程语言中,单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和指向下一个节点的引用。这个数据结构在处理动态数据集合时非常有用,因为它允许快速插入和删除操作。下面我们将详细...

    【数据结构课程设计】单链表的基本操作

    在这个“数据结构课程设计”中,我们将深入探讨单链表的基本操作,包括其定义、特点以及如何通过编程实现这些操作。 单链表是一种线性数据结构,每个元素称为节点,包含两部分:数据域,存储实际的数据;指针域,...

    java 实现单链表逆转详解及实例代码

    单链表逆转是数据结构与算法中的一个常见问题,它要求改变链表中节点的顺序,使得原本的链表头成为尾,原本的尾成为头。在这个Java实现中,我们有两个方法来完成这个任务:一个使用递归,另一个使用循环。 1. **...

    数据结构2表-单链表.ppt

    * 单链表可以使用 Java 语言实现,例如使用数组来存储数据元素,并使用指针来连接每个节点。 * 单链表的实现需要考虑存储空间的分配和释放,例如使用动态数组来存储数据元素。 四、单链表的操作 * 插入操作:在...

Global site tag (gtag.js) - Google Analytics