/*
第一个节点称为:头节点,或根节点
[示例]:内部类实现单链表
*/
class Link
{
private Node head; //定义头节点,是链表的一个成员变量,是Node类的对象
public void add(String name) //添加链表中的元素(节点)
{
Node newNode= new Node(name);
if(this.head==null) //如果没有头节点就把头节点作为头节点
{
this.head=newNode;
}
else
{
//从根节点开始判断插不插,头节点后面如果没有节点就插在头结点后面,
//有的话就再判断下一个节点后面有木有... 目的是插在最后面
this.head.addNode(newNode); //addNode是内部类的方法
}
}
public boolean search(String name) //查找节点
{
if(head!=null) //首先检测头节点
{
return this.head.searchNode(name); //searchNode是内部类的方法
}
else
{
return false;
}
}
public void delete(String name) //删除链表中的元素
{
if(this.search(name)) //先看看这个链表中有没有这个节点的名字
{
//这个this是链表本身,不是指节点,而head只是链表的一个成员变量
//而对于Node类来说,head是它的实例对象
if(this.head.name.equals(name)) //如果发现要删除的是头节点
{
if(this.head.nextNode!=null)
{
this.head=this.head.nextNode; //将头节点的下一个节点变成根节点
}
else
{
this.head=null; //如果只有一个头节点,删除之后就木有节点了
}
}
else //如果要删除的不是头节点,就看看是不是要删除头节点的下一个节点
{
if(this.head.nextNode!=null)
{
this.head.nextNode.deleteNode(head,name); //deleteNode是内部类的方法
}
}
}
}
public void print() //打印
{
if(this.head!=null)
{
this.head.printNode();
}
}
//----------- 内部类 -----------------//
class Node //使用内部类的话,每一个节点就是一个Node对象
{
private String name; //保存节点名称
private Node nextNode; //保存下一个节点
public Node(String name) //构造
{
this.name=name;
}
public void setNextNode(Node nextNode) //设置下一个节点
{
this.nextNode=nextNode;
}
public Node getNextNode() //获取下一个节点
{
return this.nextNode;
}
public String getName() //获取节点名称,我们的节点简单,就只有名称
{
return this.name;
}
public void addNode(Node newNode) //添加节点
{
if(this.nextNode==null)//如果不存在下一个节点,就将新节点插到它的后面
{
this.nextNode=newNode; //加在最后一个位置
}
else
{
this.nextNode.addNode(newNode); //否则就让下一个节点判断插不插,嵌套调用
}
}
public boolean searchNode(String name) //通过名称查找节点
{
if(this.name.equals(name)) //比较当前节点是否符合
{
return true;
}
else
{
if(nextNode!=null) //下一个节点不为空就继续比较
{
return this.nextNode.searchNode(name);//否则就继续查找,递归查找下一个节点
}
else
{
return false;
}
}
}
public void deleteNode(Node preNode,String name) //删除节点
{
if(this.name.equals(name)) //如果当前节点名称就是所要要删除的
{
preNode.nextNode=this.nextNode;//将this的下一个节点引用传给this的上一个节点保存
}
else
{
this.nextNode.deleteNode(this,name);//递归下个节点确认其名称是否就是要删除的
}
}
public void printNode() //打印节点
{
s.tp(this.name+"->");
if(this.nextNode!=null)
{
this.nextNode.printNode();
}
}
}
}
class Demo
{
public static void main(String[] args) throws Exception
{
Link l= new Link();
l.add("火车头");
l.add("1号车厢");
l.add("2号车厢");
l.add("3号车厢");
l.add("4号车厢");
l.add("5号车厢");
l.print();
s.op();
s.op("删除后-----------------------------------------------");
l.delete("5号车厢");
l.print();
}
}
class s //万能打印
{
public static void op(Object obj)
{
System.out.println(obj); //打印并换行
}
public static void op()
{
System.out.println(); //打印空行
}
public static void tp(Object obj)
{
System.out.print(obj); //打印不换行
}
}
- 大小: 125.8 KB
- 大小: 67.3 KB
分享到:
相关推荐
Java学习笔记 Java是一种流行的编程语言,广泛应用于Android应用程序开发、Web应用程序开发、桌面应用程序开发等领域。以下是Java学习笔记的摘要信息: 一、Java技术基础 * 1.1 编程语言:Java是一种面向对象的...
Java学习笔记:JSONObject与JSONArray的使用.docx
Java学习笔记:JSONObject与JSONArray的使用.pdf
### Java学习笔记——内部类详解 #### 一、引言 Java中的内部类是一个非常有用但又容易让人感到困惑的概念。内部类本质上是在另一个类的内部定义的类,它可以访问外部类的所有成员变量和方法,甚至是私有成员。...
Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习...
《林信良Java学习笔记》是一本深受程序员喜爱的Java学习资源,尤其因其繁体字版,对于中文读者来说,提供了更为亲切的阅读体验。这本书深入浅出地讲解了Java编程语言的基础知识和高级特性,旨在帮助初学者快速掌握...
著作:《JAVA 学习笔记》、《Spring 技术手册》,为SUN官方教材主要编写成员之一 博客: http://blog.csdn.net/caterpillar_here 详细信息: http://www.china-pub.com/computers/common/info.asp?id=31664
Java学习笔记1 Java学习笔记1是学习Java过程中的笔记,主要记录了Eclipse开发环境中的快捷键使用、编辑功能、查找和调试等知识点。 Eclipse快捷键 Eclipse中有许多快捷键,掌握这些快捷键可以大大提高开发效率。...
4. 集合框架:Java集合框架是用于存储和操作对象的工具,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)、Map(如HashMap和TreeMap)等接口及其实现类。它们提供了丰富的API用于添加、删除、查找...
java学习笔记java学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记...
"Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...
本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...
Java内部类是Java语言中一个独特且强大的特性,它允许我们在一个类的内部定义另一个类。内部类可以分为四种类型:静态内部类、成员内部类(非静态内部类)、局部内部类和匿名内部类。 1. **静态内部类**: 静态...
Java 虚拟机学习笔记: Java 内存区域, 垃圾收集, 内存分配与回收策略, JVM 调优, 文件结构, 类加载机制, Java 程序 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,...
Java JDK 5.0学习笔记:TP312JA L393.iso 随书光盘,欢迎大家下载 大家共享^A^
1.1 编程语言:Java作为一种强类型、面向对象的编程语言,其设计目标是实现可移植性,使得编写一次,到处运行。 1.2 Java的特点:包括平台独立性、安全性、高效性、多线程支持、垃圾回收机制等。 1.3 Java开发环境...
2. **类和对象**:Java是一种面向对象的语言,因此理解类和对象的概念至关重要。类是对象的模板,它定义了对象的状态(属性)和行为(方法)。而对象则是类的实例,具有类所描述的属性和功能。 3. **封装、继承和...
1. 面向对象(OOP):Java的核心是面向对象编程,它将数据和操作数据的方法封装在一起,形成类。面向对象的三大特性——封装、继承和多态,在06面向对象(上)、07面向对象(中)和08面向对象(下)中进行了详细介绍...
此外,《JAVA学习笔记》还涵盖了集合框架,包括ArrayList、LinkedList、HashSet、HashMap等各种集合类的使用,以及泛型、迭代器和流API的应用。这些内容对于处理数据和实现复杂算法至关重要。 对于多线程编程,书中...
【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...