单向链表

作者:vashon

package com.ywx.link;
/**
* 单向链表
* @author vashon
*
*/
public class LinkTest {
public static void main(String[] args) {
Link l=new Link();
l.addNode("A");
l.addNode("B");
l.addNode("C");
l.addNode("D");
l.addNode("E");
System.out.println("==========增加之后的内容==========");
l.printNode();
System.out.println("\n包含D:"+l.contains("D"));
System.out.println("==========删除之前的内容==========");
l.deleteNode("A");
System.out.println("==========删除之后的内容==========");
l.printNode();
}
}
class Link{//链表的完成类
class Node{//保存每个节点
private String data;//节点内容
private Node next;//下一个节点
public Node(String data){
this.data=data;
}
public void add(Node newNode) {//将节点加入到合适的位置
if(this.next==null){
this.next=newNode;
}else{
this.next.add(newNode);
}
}
public void print() {//输出节点的内容
System.out.print(this.data+"\t");
if(this.next!=null){
this.next.print();//递归调用输出
}
}
public boolean search(String data){//内部搜索的方法
if(data.equals(this.data)){
return true;
}else{
if(this.next!=null){//向下继续判断
return this.next.search(data);
}else{
return false;
}
}
}
public void delete(Node previous, String data) {
if(data.equals(this.data)){//找到了匹配的节点
previous.next=this.next;//空出当前的节点
}else{
if(this.next!=null){
this.next.delete(this, data);//继续查找
}
}
}
}
private Node root;//链表中的根节点
public void addNode(String data){//增加节点
Node newNode=new Node(data);
if(root==null){
root=newNode;
}else{
root.add(newNode);
}
}
public void printNode(){//链表的输出
if(root!=null){
root.print();
}
}
public boolean contains(String name){//判断元素是否存在
return this.root.search(name);
}
public void deleteNode(String data){//链表删除节点
if(this.contains(data)){
if(this.root.data.equals(data)){//如果是根节点
this.root=this.root.next;//修改根节点
}else{
this.root.next.delete(root,data);//把下一个节点的前节点和要删除的节点内容一起传入
}
}
}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

java实现单向链表的增、删、改、查的更多相关文章

  1. Java操作MongoDB:连接&增&删&改&查

    1.连接 ①方式一 MongoClientOptions.Builder builder = MongoClientOptions.builder(); //可以通过builder做各种详细配置 Mo ...

  2. 好用的SQL TVP~~独家赠送[增-删-改-查]的例子

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...

  3. iOS FMDB的使用(增,删,改,查,sqlite存取图片)

    iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...

  4. iOS sqlite3 的基本使用(增 删 改 查)

    iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...

  5. django ajax增 删 改 查

    具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...

  6. ADO.NET 增 删 改 查

    ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...

  7. MVC EF 增 删 改 查

    using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...

  8. python基础中的四大天王-增-删-改-查

    列表-list-[] 输入内存储存容器 发生改变通常直接变化,让我们看看下面列子 增---默认在最后添加 #append()--括号中可以是数字,可以是字符串,可以是元祖,可以是集合,可以是字典 #l ...

  9. Java实现单向链表的增删改查

    class List<T> { private class Node { private T data; private Node next; private Node(T data) { ...

随机推荐

  1. DEDECMS织梦自定义表单中必填项、电话邮箱过滤以及验证码规则

    织梦自定义表单必填项规则--->(wwwshu-acca.com网站表单) 1. 在plus/diy.php 的第 40行下加如下代码: 1 2 3 4 5 6 7 8 9 10 11 12 1 ...

  2. mongodb mongod 参数解释

    基本配置----------------------------------------------------------------------------------quiet # 安静输出-- ...

  3. java在某个日期上添加n天的方法实现

    //得到添加n天后的时间字符串 public String getAddDate(Date date,int n){ //格式转换 SimpleDateFormat sdf = new SimpleD ...

  4. 666 专题五 AC自动机

    Problem A.Keywords Search d.n个关键字,1段描述,求描述中出现了多少关键字 s. c. /* ac自动机模板 n个关键字,1段描述,求描述中出现了多少关键字 */ #inc ...

  5. Objective-C Runtime(二)消息传递机制

    在对象上调用方法是包括Objective-C的众多语言都具备的功能.但在Objective-C中,这个术语叫『传递消息』(pass a message).『消息』有「名称」(name)或「选择子」(s ...

  6. iOS添加弹出菜单

    最近接触的项目需要实现一个弹出窗,类似于点击微信navigation bar右上角的bar button所展现的弹出窗,最终效果如下: Demo代码存放在https://github.com/LuoD ...

  7. Luogu网校听课笔记(自用

    TG助学课——noilinux 8.2 深夜 Noi Linux的使用——darkflames的博客 #include<bits/stdc++.h> using namespace std ...

  8. const 和指针

    c++用了那么久,觉得 const 和指针配合到一起的时候就会有点点分不出来. 如下: const Data* pData; Data const * pData Data * const pData ...

  9. 任务26:dotnet watch run 和attach到进程调试

    任务26:dotnet watch run 和attach到进程调试 dotnet watch run 的一种调试方法 打开VSCode,先关闭当前的文件夹 Ctrl+~快捷键 打开窗体. ls应该是 ...

  10. iView 实战系列教程(21课时)_1.iView 实战教程之配置篇

    1.iView 实战教程之配置篇 点击添加插件,. 选中后安装 全部导入还是按需导入. 2.是否需要自定义主题变量 3.多语言的设置. 这里我们全部选择为默认 然后点击继续. 启动项目 入口文件导入了 ...