java实现单向链表的增、删、改、查
单向链表
作者: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实现单向链表的增、删、改、查的更多相关文章
- Java操作MongoDB:连接&增&删&改&查
1.连接 ①方式一 MongoClientOptions.Builder builder = MongoClientOptions.builder(); //可以通过builder做各种详细配置 Mo ...
- 好用的SQL TVP~~独家赠送[增-删-改-查]的例子
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
- iOS FMDB的使用(增,删,改,查,sqlite存取图片)
iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...
- iOS sqlite3 的基本使用(增 删 改 查)
iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...
- django ajax增 删 改 查
具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...
- ADO.NET 增 删 改 查
ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...
- MVC EF 增 删 改 查
using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...
- python基础中的四大天王-增-删-改-查
列表-list-[] 输入内存储存容器 发生改变通常直接变化,让我们看看下面列子 增---默认在最后添加 #append()--括号中可以是数字,可以是字符串,可以是元祖,可以是集合,可以是字典 #l ...
- Java实现单向链表的增删改查
class List<T> { private class Node { private T data; private Node next; private Node(T data) { ...
随机推荐
- 教你开发jQuery插件
jQuery插件开发模式 软件开发过程中是需要一定的设计模式来指导开发的,有了模式,我们就能更好地组织我们的代码,并且从这些前人总结出来的模式中学到很多好的实践. 根据<jQuery高级编程&g ...
- expect的安装与使用
expect的安装与使用 是什么 expect 是用来进行自动化控制和测试的工具.主要是和交互式软件telnet ftp ssh 等进行自动化的交互. 如何安装 1.检测是否安装 ls /usr/bi ...
- jsorder 第三方修改版 修正bug 增加总价
我主要运用这个jsorder,修正了它的不足//1.0版本bug:刷新页面 无法增加或者删除原来添加的商品//1.1版本:修正了1.0版本 新增bug 能够修改原来的商品 但出现产品数量为0 仍然保 ...
- fasttext(1) -- 认识 fasttext 和 初步使用
fastText 的 Python接口:https://github.com/salestock/fastText.py (1) fasttext 简介:FastText是Facebook开发的一款快 ...
- Asp.net MVC 使用PagedList(新的已更名 为X.PagedList.Mvc) 分页
在asp.net mvc 中,可以bootstrap来作为界面,自己来写分页程序.也可以使用PagedList(作者已更名为 X.PagedList.Mvc)来分页. 1.首先,在NuGet程序包管理 ...
- HDU 5883 The Best Path (欧拉路或者欧拉回路)
题意: n 个点 m 条无向边的图,找一个欧拉通路/回路使得这个路径所有结点的异或值最大. 析:由欧拉路性质,奇度点数量为0或2.一个节点被进一次出一次,度减2,产生一次贡献,因此节点 i 的贡献为 ...
- Unity3D模型制作规范[转]
本文提到的所有数字模型制作,全部是用3D MAX建立的模型,即使是不同的驱动引擎,对模型的要求基本是相同的.当一个VR模型制作完成时,它所包含的基本内容包括:场景尺寸.单位,模型归类塌陷.命名.节点编 ...
- Ruby基本语法
更新: 2017/06/09 更新: 2017/06/20 cattr_accessor定义类变量,相当于@@ 更新: 2017/06/23 生成类的实例 更新: 2017/06/24 补充loop的 ...
- hdoj3183【思维】
思路: 处理方案非常霸气啊,无奈想不到. 说是n位去m个,那么默认就是取了n-m个数字,ok,然后m #include <iostream> #include <stdio.h> ...
- hdoj1257【疑问】(贪心)
这完全可以达到3*1e4个啊...如果这样子,这复杂度就炸了吧?... #include<iostream> #include<cstdio> #include<math ...