用惯了C++,java写起来果然不太爽。。。不废话了,上代码。。。

package javaInnerclassDemo;

class Link{

class Node{

private String name;

private Node next;

public Node(String name){

this.name=name;

}

public void setname(String name){

this .name = name;

}

public String getname(){

return this.name;

}

public void addnode(Node newnode){

if(this.next==null)

this.next=newnode;

else

this.next.addnode(newnode);

}

public void printnode(){

if(this.next!=null){

System.out.print(this.name);

System.out.print("——>");

}

else

System.out.println(this.name);

if(this.next!=null)

this.next.printnode();

}

public boolean searchnode(String name){

if(this.name.equals(name)){

return true ;

}

else{

if(this.next!=null){

return this.next.searchnode(name) ;

}

else{

return false ;

}

}

}

public void deleteNode(Node preNode,String name){

if(this.name.equals(name)){

preNode.next = this.next ;

}else{

this.next.deleteNode(this,name) ;

}

}

}

private Node root;

public void add(String name){

Node newnode = new Node(name);

if(this.root==null)

this.root=newnode;

else

this.root.addnode(newnode);

}

public void print(){

if(this.root!=null){ //之所以在外部判断,因为printnode需要迭代

this.root.printnode();

}

else

System.out.println("链表为空,无法打印!");

}

public boolean search(String name){

if(this.root.searchnode(name)==true)

return true;

else

return false;

}

public void delete(String name){

if(this.search(name)){// 判断此节点是否存在

if(this.root.name.equals(name)){

if(this.root.next!=null){

this.root = this.root.next ;// 改变根节点

}

else{

this.root = null ;// 取消

}

}

else{

if(this.root.next!=null){

this.root.next.deleteNode(root,name) ;

}

}

}

else

System.out.println("所要删除节点不存在!");

}

}

public class LinklistDemo {

public static void main(String[] args) {

Link l = new Link();

l.add("walkthehorizon");

l.add("已经");

l.add("无人");

l.add("能挡");

l.add("了");

l.add("么");

System.out.println("打印链表");

l.print();

System.out.println("查找链表");

System.out.println(l.search("walkthehorizon"));

System.out.println(l.search("放逐之刃"));

System.out.println("删除节点");

l.delete("么");

l.print();

}

}java的单链表实现核心在于多层次迭代。

原文:http://blog.csdn.net/u014492609/article/details/42809181

java代码实现链表_java单链表代码实现相关推荐

  1. java单链表查询功能,Java 实现简答的单链表的功能

    作者:林子木  博客网址:http://blog.csdn.net/wolinxuebin 參考网址:http://blog.csdn.net/sunsaigang/article/details/5 ...

  2. php链表和联表的区别,PHP_浅谈PHP链表数据结构(单链表),链表:是一个有序的列表,但 - phpStudy...

    浅谈PHP链表数据结构(单链表) 链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个 ...

  3. php mysql 链表_浅谈PHP链表数据结构(单链表)

    链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个程序运行时,内存分成五个区(堆区, ...

  4. 线性表详解(静态链表、单链表、双向链表、循环链表)

    目录 申明 1. 线性表的定义 2. 线性表的抽象数据类型 3. 线性表的顺序存储结构 3. 1 顺序存储定义 3. 2 顺序存储方式 3. 3 数据长度与线性表长度区别 3. 4 地址计算方法 4. ...

  5. 数据结构5: 链表(单链表)的基本操作及C语言实现

    逻辑结构上一个挨一个的数据,在实际存储时,并没有像顺序表那样也相互紧挨着.恰恰相反,数据随机分布在内存中的各个位置,这种存储结构称为线性表的链式存储. 由于分散存储,为了能够体现出数据元素之间的逻辑关 ...

  6. 单链表删除所有值为x的元素_C/C++编程笔记:如何使用C++实现单链表?单链表的基本定义...

    如何弥补顺序表的不足之处? 第一次学习线性表一定会马上接触到一种叫做顺序表(顺序存储结构),经过上一篇的分析顺序表的优缺点是很显然的,它虽然能够很快的访问读取元素,但是在解决如插入和删除等操作的时候, ...

  7. python单链表实现具体例子_Python实现数据结构线性链表(单链表)算法示例

    本文实例讲述了Python实现数据结构线性链表(单链表)算法.分享给大家供大家参考,具体如下: 初学python,拿数据结构中的线性链表存储结构练练手,理论比较简单,直接上代码. #!/usr/bin ...

  8. 线性表:3.链表,单链表详解与C语言实现

    逻辑结构上一个挨一个的数据,在实际存储时,并没有像顺序表那样也相互紧挨着.恰恰相反,数据随机分布在内存中的各个位置,这种存储结构称为 线性表的链式存储 . 由于分散存储,为了能够体现出数据元素之间的逻 ...

  9. C语言丨线性表(二):线性链表(单链表)

    线性表是由数据类型相同的个数据元素组成的有限序列,通常记为: 其中n为表长,n=0时称为空表:下标i表示数据元素的位序. 线性表的特点是组成它的数据元素之间是一种线性关系,即数据元素"一个接 ...

最新文章

  1. zabbix开启报警声音 网页也可以有声音
  2. tensorflow 1.0 学习:参数初始化(initializer)
  3. 使用代码创建BRF ruleset
  4. P5782-[POI2001]和平委员会【2-SAT】
  5. 深度学习《StarGAN》
  6. 关于JVM类加载的几个问题
  7. 手机MODEM 开发(33)---SimCard 学习总结
  8. java set的作用,Java的自学之路-构造方法 的作用以及与set方法的区别
  9. Android虚拟键盘上下左右键按下和弹起的响应事件
  10. 二维数组和稀疏数组转化
  11. 红帽linux64系统下载,红帽rhel6.5下载
  12. 英语十大词性之四 - 副词
  13. 两台计算机数据传输网线如何做,两台电脑连线传送数据(备份计算机资源)
  14. IllegalStateException: Fragment already added
  15. Mathematica学习(2)-mathematica命令
  16. “筑爱助残 欢乐DIY”蒲公英志愿者走进残疾人之
  17. linux下的go富集分析,GO富集分析(转载)-Go语言中文社区
  18. 3500双休和4000单休,你选哪个?
  19. 比例运算电路(multisim实现)
  20. Typora免费版本0.11.18

热门文章

  1. 使用 ASP.NET Core, Entity Framework Core 和 ABP 创建N层Web应用 第二篇
  2. Debug ASP.NET Core 2.0源代码
  3. .NET Framework 4.7正式发布
  4. 开发者的利器:Docker 理解与使用
  5. ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First
  6. 微软觊觎LinkedIn算法
  7. java nio epoll_Java NIO 选择器(Selector)的内部实现(poll epoll)
  8. Asp.net MVC 中Controller返回值类型ActionResult
  9. Android之Canvas的drawRoundRect()
  10. LeetCode之Max Consecutive Ones