`

数据结构_用java实现单链表

 
阅读更多

数据结构_用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语言描述.zip

    本教程“实用数据结构教程_Java语言描述”涵盖了这个主题,旨在帮助学习者深入理解和应用Java中的数据结构。 1. 数组:数组是最基本的数据结构,它允许存储固定大小的同类型元素序列。在Java中,数组可以是一维、二...

    实用数据结构教程_Java语言描述

    学习“实用数据结构教程_Java语言描述”这份资料,你将能够深入理解这些数据结构的实现原理,并学会如何在Java程序中应用它们。通过实例和练习,你可以提升解决问题的能力,为成为一名优秀的Java开发者打下坚实基础...

    基于JAVA的单链表简单实现

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

    Java数据结构和算法中文第二版_Java数据结构_

    《Java数据结构和算法中文第二版》是一本深入探讨Java编程中数据结构和算法的书籍。数据结构是计算机科学的基础,它涉及到如何有效地组织和存储数据,以便在各种操作下高效地访问和修改。算法则是解决问题的具体步骤...

    班级考勤管理系统程序代码+实现GUI界面设计+JAVA实现+数据结构(顺序表、单链表、插入排序算法)+程序要求+程序说明书.rar

    该压缩包包含的是一个基于Java实现的班级考勤管理系统的完整源代码,涵盖了GUI界面设计、数据结构(顺序表、单链表)以及插入排序算法的应用。以下将详细阐述其中涉及的知识点: 1. **Java编程语言**:Java是一种跨...

    LinkList单文件_一个简单单链表_

    单链表是一种基础且重要的数据结构,它在计算机科学中被广泛使用,特别是在算法和数据结构的学习中。本文将深入探讨单链表的概念、特点、基本操作以及如何在实际编程中实现一个简单的单链表。 单链表由一系列节点...

    基于java的循环单链表

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

    数据结构JAVA实现

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

    newreview_die4ix_Java数据结构_

    Java数据结构是编程领域中的重要组成部分,特别是在Java编程中,理解和掌握数据结构是提升程序效率、优化算法的关键。"newreview_die4ix_Java数据结构_"这个标题暗示了这是一个关于Java编程和数据结构复习的资源,...

    JAVA单链表操作实验

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

    java数据结构之单链表

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

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

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

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

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

    Java单链表的实现代码

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

    Java单链表增删改查的实现

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

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

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

Global site tag (gtag.js) - Google Analytics