数据结构_用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语言来实现单链表及其相关操作。 首先,我们来理解单链表的基本概念。单链表由一系列节点组成,每...
本文将深入探讨如何使用Java语言实现单链表的基本操作,包括创建链表、插入节点、删除节点以及遍历链表等关键功能。 首先,我们需要理解单链表的概念。单链表是一种线性数据结构,其中每个元素(称为节点)包含两个...
在这个主题中,我们将深入探讨如何使用Java来实现单链表,特别是关注如何插入元素以及如何构建链表。 单链表由一系列节点组成,每个节点包含两部分:数据元素和指向下一个节点的引用。在Java中,我们可以通过创建一...
单链表是数据结构中最基础的一种,它是一种线性数据结构,由一系列节点(也称为元素)组成,每个节点包含两个部分:数据域和指针域。数据域存储实际的数据,而指针域则指向链表中的下一个节点。在Java中,我们可以...
单链表的冒泡排序,热烈欢迎大家的下载,谢谢谢谢
在这个名为“数据结构JAVA实现”的压缩包中,我们可以看到作者提供了三种重要的数据结构——链表、有序二叉树和队列的Java代码实现。 首先,让我们详细探讨链表。链表是一种线性数据结构,与数组不同,它不连续存储...
数据结构学习之循环单链表(基本操作实现) 数据结构学习之循环单链表(基本操作实现)
循环单链表是一种常见的数据结构,它在计算机科学和编程中有着广泛的应用。与普通单链表不同,循环单链表的最后一个元素...理解并掌握循环单链表的原理和实现,对于学习数据结构和算法以及编写高效的Java代码至关重要。
在本项目中,我们主要探讨的是数据结构中的一个重要概念——单链表,以及如何使用Java语言结合图形用户界面(GUI)来实现它。单链表是一种线性数据结构,其中的元素不是顺序存储的,而是通过指向下一个元素的指针...
"JAVA单链表操作实验" 在本实验中,我们将实现一个基于JAVA的单链表操作实验,该实验可以实现以下三个功能:1.根据从键盘输入一串字符串自动生成一个单链表;2.根据指定元素删除相应的结点,可以一次性删除多个结点...
在这个"数据结构顺序表+单链表+二叉树+图等等各实验总汇.rar"压缩包中,包含了多个关于基础数据结构的实验,对于计算机专业的学生来说,这些都是极其重要的学习资源。 首先,我们来看"顺序表o_o"。顺序表是一种最...
Java作为一种广泛使用的面向对象的编程语言,提供了丰富的数据结构支持。本文将深入探讨Java中的单链表,这是一种基本但至关重要的数据结构。 单链表是一种线性数据结构,其中每个元素(称为节点)包含两个部分:...
数据结构中的单链表是一种基本的数据组织形式,用于存储一系列有序或无序的元素。在这个实验报告中,我们将深入探讨如何使用单链表解决实际问题,即表达式的求值。这个实验任务要求我们通过栈操作来实现双目运算符的...
在Java编程语言中,数据结构是组织和管理数据的关键元素,它们提供了高效访问和操作数据的方式。...源代码文件提供了具体的实现细节,通过阅读和分析,我们可以学习到如何在Java中有效地实现和使用这些基础数据结构。
`Java单链表的操作代码int型.rar`和`Java单链表的操作代码char型.rar`两个压缩包中可能包含了这些类的源代码示例,供学习者参考和实践。通过这些代码,你可以了解如何在实际项目中应用单链表,以及如何根据需求扩展...
本话题主要探讨两种常用的数据结构——单链表和双向链表在Java中的实现,以及相关的操作,如在头部添加节点、在尾部添加节点、遍历、逆置和删除。 首先,我们来理解单链表和双向链表的基本概念。单链表是一种线性...
在Java编程语言中,单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和指向下一个节点的引用。这个数据结构在处理动态数据集合时非常有用,因为它允许快速插入和删除操作。下面我们将详细...
在这个“数据结构课程设计”中,我们将深入探讨单链表的基本操作,包括其定义、特点以及如何通过编程实现这些操作。 单链表是一种线性数据结构,每个元素称为节点,包含两部分:数据域,存储实际的数据;指针域,...
单链表逆转是数据结构与算法中的一个常见问题,它要求改变链表中节点的顺序,使得原本的链表头成为尾,原本的尾成为头。在这个Java实现中,我们有两个方法来完成这个任务:一个使用递归,另一个使用循环。 1. **...
* 单链表可以使用 Java 语言实现,例如使用数组来存储数据元素,并使用指针来连接每个节点。 * 单链表的实现需要考虑存储空间的分配和释放,例如使用动态数组来存储数据元素。 四、单链表的操作 * 插入操作:在...