class List<T>
{
private class Node
{
private T data;
private Node next; private Node(T data)
{
if(data != null)
this.data = data;
} private void add(T data)
{
if(this.next == null)
this.next = new Node(data);
else
this.next.add(data);
} private void remove(Node previous, int index)
{
if(List.this.foot++ == index)
{
previous.next = this.next;
this.next = null;
List.this.count--;
return;
}
else
{
this.next.remove(this,index);
}
} private void remove(Node previous, T data)
{
if(this.data.equals(data))
{
previous.next = this.next;
this.next = null;
List.this.count--;
return;
} if(this.next != null)
this.next.remove(this,data);
else
return ;
} private void replace(int index, T data)
{
if(List.this.foot++ == index)
this.data = data;
else
this.next.replace(index,data);
} private void replace(T oldData, T newData)
{
if(this.data.equals(oldData))
this.data = newData;
else
this.next.replace(oldData,newData);
} private T get(int index)
{
if(List.this.foot++ == index)
return this.data;
else
return this.next.get(index);
} private boolean contains(T data)
{
if(this.data.equals(data))
return true;
if(this.next != null)
return this.next.contains(data);
else
return false;
}
} //===============================================
private Node root;
private int count;
private int foot; public List()
{} public boolean isEmpty()
{
if(this.count == && this.root == null)
return true;
else
return false;
} public int size()
{
return this.count;
} public void add(T data)
{
if(this.isEmpty())
this.root = new Node(data);
else
this.root.add(data); this.count++;
} public void remove(int index)
{
if(this.isEmpty())
return; if(index < || this.count <= index)
return; if(index == )
{
Node temp = this.root;
this.root = this.root.next;
temp.next = null;
this.count--;
return;
}
else
{
this.foot = ;
this.root.remove(this.root, index);
}
} public void remove(T data)
{
if(this.isEmpty())
return ; if(this.root.data.equals(data))
{
Node temp = this.root;
this.root = this.root.next;
temp.next = null;
this.count--;
return;
}
else
{
this.root.next.remove(this.root, data);
}
} public void replace(int index, T data)
{
if(this.isEmpty())
return; if(index < || this.count<=index)
return; this.foot = ;
this.root.replace(index,data);
} public void replace(T oldData, T newData)
{
if(this.isEmpty())
return; this.root.replace(oldData,newData);
} public T get(int index)
{
if(this.isEmpty())
return null; this.foot = ;
return this.root.get(index);
} public boolean contains(T data)
{
if(this.isEmpty())
return false; return this.root.contains(data);
} public Object[] toArray()
{
if(this.isEmpty())
return null; int count = this.count;
Object[] retVal = new Object[count];
for(int i = ; i < count; i++)
{
retVal[i] = this.get(i);
}
return retVal;
}
} public class Hello
{
public static void main(String[] args) throws Exception
{
List<String> myList = new List<String>();
myList.add("Hello");
myList.add("world");
myList.add("Ni");
myList.add("Hao");
myList.add("HeHe"); System.out.println(myList.contains(null)); Object[] result = myList.toArray(); for(Object item : result)
{
String temp = (String)item;
System.out.println(temp);
}
}
}

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

  1. 关于单链表的增删改查方法的递归实现(JAVA语言实现)

    因为在学习数据结构,准备把java的集合框架底层源码,好好的过一遍,所以先按照自己的想法把单链表的类给写出来了; 写该类的目的: 1.练习递归 2.为深入理解java集合框架底层源码打好基础 学习的视 ...

  2. java对xml文件做增删改查------摘录

    java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...

  3. 使用java对sql server进行增删改查

    import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import ...

  4. Java API实现Hadoop文件系统增删改查

    Java API实现Hadoop文件系统增删改查 Hadoop文件系统可以通过shell命令hadoop fs -xx进行操作,同时也提供了Java编程接口 maven配置 <project x ...

  5. Java描述数据结构之链表的增删改查

    链表是一种常见的基础数据结构,它是一种线性表,但在内存中它并不是顺序存储的,它是以链式进行存储的,每一个节点里存放的是下一个节点的"指针".在Java中的数据分为引用数据类型和基础 ...

  6. java实现单链表的增删改以及排序

    使用java代码模拟单链表的增删改以及排序功能 代码如下: package com.seizedays.linked_list; public class SingleLinkedListDemo { ...

  7. Java项目——模拟电话薄联系人增删改查

    该项目模拟了电话本记录联系人的业务功能,用来练习对数据库的增删改查等操作. 菜单类:Menu -- 用来封装主菜单和个选项的子菜单 Person类: Person--联系人的实体类 TelNoteRe ...

  8. Java Web(十) JDBC的增删改查,C3P0等连接池,dbutils框架的使用

    前面做了一个非常垃圾的小demo,真的无法直面它,菜的抠脚啊,真的菜,好好努力把.菜鸡. --WH 一.JDBC是什么? Java Data Base Connectivity,java数据库连接,在 ...

  9. 【ES】ElasticSearch初体验之使用Java进行最基本的增删改查~

    好久没写博文了, 最近项目中使用到了ElaticSearch相关的一些内容, 刚好自己也来做个总结. 现在自己也只能算得上入门, 总结下自己在工作中使用Java操作ES的一些小经验吧. 本文总共分为三 ...

随机推荐

  1. ABBYY FineReader的图像编辑器功能使用方法

    日常工作中,有时可能需要对图像进行编辑,可是正常情况下大家都知道图像是不能直接编辑的,需要借助工具.ABBYY FineReader 12 OCR文字识别软件可以实现图像的手动编辑,接下来就具体给大家 ...

  2. 项目发布: error CS0103: 当前上下文中不存在名称“*****”

    项目发布,发布不出来,而且编译,发布过程中vs也不报错,也不提示错误.   在错误窗口忽闪一个错误提示之后,输出窗口有西边的提示: error CS0103: 当前上下文中不存在名称"Cur ...

  3. @include与jsp:include的区别

    1.可以使用一个JSP指令或者一个标准行为,在JSP页面中引入其他的页面片段. 2. include指令:在翻译阶段(将JSP页面转换成servlet的阶段),JSP的include指令会读入指定的页 ...

  4. linux包之procps之sysctl命令

    概述 [root@localhost ~]# rpm -qf /sbin/sysctlprocps-3.2.8-25.el6.x86_64 我们常常在 Linux 的 /proc/sys 目录下,手动 ...

  5. XMLHttpRequest 对象

    XMLHttpRequest 对象 XML XSLTXML 解析器XMLHttpRequest 对象用于在后台与服务器交换数据. 什么是 XMLHttpRequest 对象? XMLHttpReque ...

  6. ORA-12519, TNS:no appropriate service handler found

    解决问题: 有时候连不上数据库是因为连接数到了极限了. select count(*) from v$process --当前的连接数 130 select value from v$paramete ...

  7. web前端基础知识及快速入门指南

    web前端基础知识及快速入门指南 做前端开发有几个月了,虽然说是几个月,但是中间断断续续的上课.考试以及其它杂七杂八的事情,到现在居然一直感觉自己虽然很多前端的知识很眼熟,却也感觉自己貌似也知识在门口 ...

  8. 带Cookie的 WebClient

    /// <summary> /// WebClient的扩展 /// </summary> public class webClient : WebClient { /// & ...

  9. 【linux】ps 命令详解

    [root@andon lib]# ps aux ###常用格式 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0 ...

  10. iPerf - The network bandwidth measurement tool

    What is iPerf / iPerf3 ? iPerf3 is a tool for active measurements of the maximum achievable bandwidt ...