数据结构_用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中的数据结构。 1. 数组:数组是最基本的数据结构,它允许存储固定大小的同类型元素序列。在Java中,数组可以是一维、二...
学习“实用数据结构教程_Java语言描述”这份资料,你将能够深入理解这些数据结构的实现原理,并学会如何在Java程序中应用它们。通过实例和练习,你可以提升解决问题的能力,为成为一名优秀的Java开发者打下坚实基础...
单链表是数据结构中最基础的一种,它是一种线性数据结构,由一系列节点(也称为元素)组成,每个节点包含两个部分:数据域和指针域。数据域存储实际的数据,而指针域则指向链表中的下一个节点。在Java中,我们可以...
《Java数据结构和算法中文第二版》是一本深入探讨Java编程中数据结构和算法的书籍。数据结构是计算机科学的基础,它涉及到如何有效地组织和存储数据,以便在各种操作下高效地访问和修改。算法则是解决问题的具体步骤...
该压缩包包含的是一个基于Java实现的班级考勤管理系统的完整源代码,涵盖了GUI界面设计、数据结构(顺序表、单链表)以及插入排序算法的应用。以下将详细阐述其中涉及的知识点: 1. **Java编程语言**:Java是一种跨...
单链表是一种基础且重要的数据结构,它在计算机科学中被广泛使用,特别是在算法和数据结构的学习中。本文将深入探讨单链表的概念、特点、基本操作以及如何在实际编程中实现一个简单的单链表。 单链表由一系列节点...
循环单链表是一种常见的数据结构,它在计算机科学和编程中有着广泛的应用。与普通单链表不同,循环单链表的最后一个元素...理解并掌握循环单链表的原理和实现,对于学习数据结构和算法以及编写高效的Java代码至关重要。
在这个名为“数据结构JAVA实现”的压缩包中,我们可以看到作者提供了三种重要的数据结构——链表、有序二叉树和队列的Java代码实现。 首先,让我们详细探讨链表。链表是一种线性数据结构,与数组不同,它不连续存储...
Java数据结构是编程领域中的重要组成部分,特别是在Java编程中,理解和掌握数据结构是提升程序效率、优化算法的关键。"newreview_die4ix_Java数据结构_"这个标题暗示了这是一个关于Java编程和数据结构复习的资源,...
"JAVA单链表操作实验" 在本实验中,我们将实现一个基于JAVA的单链表操作实验,该实验可以实现以下三个功能:1.根据从键盘输入一串字符串自动生成一个单链表;2.根据指定元素删除相应的结点,可以一次性删除多个结点...
Java作为一种广泛使用的面向对象的编程语言,提供了丰富的数据结构支持。本文将深入探讨Java中的单链表,这是一种基本但至关重要的数据结构。 单链表是一种线性数据结构,其中每个元素(称为节点)包含两个部分:...
在本项目中,我们主要探讨的是数据结构中的一个重要概念——单链表,以及如何使用Java语言结合图形用户界面(GUI)来实现它。单链表是一种线性数据结构,其中的元素不是顺序存储的,而是通过指向下一个元素的指针...
本话题主要探讨两种常用的数据结构——单链表和双向链表在Java中的实现,以及相关的操作,如在头部添加节点、在尾部添加节点、遍历、逆置和删除。 首先,我们来理解单链表和双向链表的基本概念。单链表是一种线性...
`Java单链表的操作代码int型.rar`和`Java单链表的操作代码char型.rar`两个压缩包中可能包含了这些类的源代码示例,供学习者参考和实践。通过这些代码,你可以了解如何在实际项目中应用单链表,以及如何根据需求扩展...
在Java编程语言中,单链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和指向下一个节点的引用。这个数据结构在处理动态数据集合时非常有用,因为它允许快速插入和删除操作。下面我们将详细...
在Java编程语言中,数据结构是组织和管理数据的关键元素,它们提供了高效访问和操作数据的方式。...源代码文件提供了具体的实现细节,通过阅读和分析,我们可以学习到如何在Java中有效地实现和使用这些基础数据结构。