一直对链表不太熟悉, 今天看了下并写了下来, 错的地方请指正.(注意:有的地方判断不够严格).
package com.test;
public class Link {
Node root;
private class Node{
String name ;
Node next;
public Node(String name){
this.name = name;
}
public void add(Node node) {
if(this.next == null){
this.next = node;
}else{
this.next.add(node);
}
}
public void print() {
System.out.print(this.name+"--->");
if(this.next != null){
this.next.print();
}
}
public boolean query(String name) {
if(this.next == null){
return false;
}else if(this.next.name.equals(name)){
return true;
}else{
return this.next.query(name);
}
}
public void delete(Node preNode , String name) {
if(this.name.equals(name)){
preNode.next = this.next;
}else{
this.next.delete(this , name);
}
}
}
public void addNode(String name){
if(this.root == null){
this.root = new Node(name);
}else {
this.root.add(new Node(name));
}
}
public boolean queryNode(String name){
if(this.root == null){
return false;
}else if(this.root.name.equals(name)){
return true;
}else{
return this.root.query(name);
}
}
public void deleteNode(String name){
if(this.root != null){
if(this.root.name.equals(name)){
this.root = this.root.next;
}else{
this.root.next.delete(root,name);
}
}
}
public static void main(String[] args) {
Link link = new Link();
link.addNode("根");
link.addNode("1");
link.addNode("2");
link.addNode("3");
link.addNode("4");
link.print();
System.out.println("");
System.out.println(link.queryNode("1"));
System.out.println("");
link.deleteNode("2");
link.print();
}
void print(){
if(this.root != null){
this.root.print();
}
}
}
分享到:
相关推荐
本文以“我的Java单链表练习”为主题,通过博主baby69yy2000在iteye上的博客分享,深入探讨了Java中实现单链表的相关知识。 首先,我们要理解单链表的概念。单链表是一种线性数据结构,由一系列节点(也称为元素或...
单链表是一种线性数据结构,其中每个节点包含数据和一个指向下一个节点的引用。而双向链表则更进一步,每个节点不仅有指向下一个节点的指针,还有一个指向前一个节点的指针。这种额外的指针使得双向链表在某些操作上...
这需要一个辅助指针来跟踪前一个节点,以便删除最后一个节点后更新其next引用。 ```java public void deleteFromEnd() { if (head == null) { System.out.println("链表为空,无法删除"); return; } if (head....
在Java中,我们可以创建一个名为`Node`的类来表示链表的节点,其中包含一个`data`字段存储数据和一个`next`字段指向下一个节点。例如: ```java public class Node { int data; Node next; public Node(int ...
以下是一个简单的`Node`类的示例: ```java public class Node { private String data; // 假设学生信息是字符串类型 private Node next; public Node(String data) { this.data = data; this.next = null; ...
在Java中,我们可以用一个简单的空节点(也称为头节点)来初始化链表。初始时,链表为空,所以头节点的`next`指针应为`null`。 ```java public class LinkedList { private Node head; public LinkedList() { ...
这个“java单链表—修订版”主题涵盖了一些基本的链表操作,包括创建链表、删除最后一个元素、删除指定元素、清空链表以及判断链表是否为空。以下是对这些操作的详细解释: 1. **建立单链表**:创建链表通常从头...
用JAVA写一个倒置单链表的源代码,适用于初学者,简单易懂
本篇文章将深入探讨Java中的循环单链表实现,并提供一个简单的测试程序。 首先,我们需要定义一个链表节点类(Node)。每个节点包含一个数据元素和一个指向下一个节点的引用。在循环单链表中,最后一个节点的next引用...
以下是一个简单的`LinkedList`类的实现: ```java public class LinkedList { private Node head; public LinkedList() { this.head = null; } // 添加节点到链表末尾 public void add(int data) { if ...
### 单链表的一个简单练习 #### 背景与目的 本练习旨在通过实际操作加深对单链表的理解,并掌握如何在单链表中进行数据的存储与查询。题目要求实现的功能包括: 1. 给定一个城市名,能够返回该城市的位置坐标。 2. ...
本文将深入探讨如何使用Java语言自己实现一个单链表,包括其核心概念、基本操作以及相关的代码实现。 首先,我们要了解单链表的基本概念。单链表是由一系列节点构成的,每个节点包含两个部分:数据域,存储实际的...
简易单链表增删改查功能实现。新增内容:新增单链表LruCache算法增删改查,对学习LruCache 算法有一定帮助。
线性表中的元素具有顺序关系,即每个元素都有一个前驱和后继,除了第一个元素没有前驱,最后一个元素没有后继。线性表的操作通常包括插入、删除、查找等。 在Java中,线性表可以使用数组或链表来实现。数组实现简单...
本文将深入探讨单链表的概念、特点、基本操作以及如何在实际编程中实现一个简单的单链表。 单链表由一系列节点组成,每个节点包含两部分:数据域(用于存储数据)和指针域(用于存储下一个节点的地址)。在单链表中...
下面是一个简单的`Node`类定义: ```java public class Node { protected Node next; protected int data; public Node(int data) { this.data = data; } public void display() { System.out.print(data ...
实现了一个简单的java版本的单链表,链表反转和链表是否相交如果相交求相交节点。关于链表是否相交是一次阿里的面试的在线试题,挂的很彻底。然后就在网上找了几个实现思路自己用java做了一个简单的实现....
以下是一个简单的单链表节点类和链表类的实现: ```java public class ListNode { int val; // 节点值 ListNode next; // 指向下一个节点的引用 ListNode(int x) { val = x; } // 构造函数 } public class ...
以下是一个简单的实现: ```java public void insertOrdered(int x) { if (header == null) { // 空表,直接在尾部插入 add(x); } else { int i; for (i = 0; i ; i++) { if (i == 0 || header.data ) { //...