JAVA 实现单链表的增删功能

  1. package linked;
  2.  
  3. class LinkedTable{
  4.  
  5. }
  6. public class LinkedTableTest {
  7.  
  8. public static void main(String[] args)
  9. {
  10. //构造单链表
  11. Node node1=new Node("name1");
  12. Node node2=new Node("name2");
  13. Node node3=new Node("name3");
  14. Node node4=new Node("name4");
  15. Node node5=new Node("name5");
  16. node1.setNextNode(node2);
  17. node2.setNextNode(node3);
  18. node3.setNextNode(node4);
  19. node4.setNextNode(node5);
  20.  
  21. System.out.println("*******初始链表*******");
  22. //循环遍历单链表
  23. outLinked(node1);
  24. System.out.println();
  25.  
  26. //插入节点在node2的后面
  27. addNode(node2);
  28.  
  29. System.out.println("*****插入node2.5后的链表*****");
  30. //循环遍历单链表
  31. outLinked(node1);
  32. System.out.println();
  33.  
  34. //删除节点
  35. node2.setNextNode(node3);
  36.  
  37. System.out.println("*******删除node2.5*******");
  38. //循环遍历单链表
  39. outLinked(node1);
  40. System.out.println();
  41.  
  42. }
  43.  
  44. public static void outLinked(Node node1){
  45. Node node= new Node();
  46. node.setNextNode(node1);
  47. do
  48. {
  49. node=node.getNextNode();
  50. System.out.print(node.getName()+"----");
  51. }while(node.getNextNode()!=null);
  52. }
  53.  
  54. public static void addNode(Node preNode)
  55. {
  56. Node node_add = new Node("name2.5");
  57. node_add.setNextNode(preNode.getNextNode());
  58. preNode.setNextNode(node_add);
  59. }
  60.  
  61. }
  62.  
  63. class Node {
  64. private String name;
  65. private Node nextNode;
  66. public void setName(String name)
  67. {
  68. this.name=name;
  69. }
  70. public void setNextNode(Node nextNode)
  71. {
  72. this.nextNode=nextNode;
  73. }
  74. public String getName()
  75. {
  76. return this.name;
  77. }
  78. public Node getNextNode()
  79. {
  80. return this.nextNode;
  81. }
  82. public Node(String name)
  83. {
  84. this.name=name;
  85. this.nextNode=null;
  86. }
  87. public Node( )
  88. {
  89.  
  90. }
  91.  
  92. }

单链表添加节点:

  1.   public static void addNode(Node preNode)
  2. {
  3. Node node_add = new Node("name2.5");
  4. node_add.setNextNode(preNode.getNextNode());
  5. preNode.setNextNode(node_add);
  6. }

S1:创建新节点(node_add)

S2:新节点的next指针指向要插入位置上一个节点(node2)的指针指向的节点

【node2.5----->node2.nextnode()】

S3:将要插入位置上一个节点(node2)的指针指向新的节点

【node2------->node2.5】

注意:

S2与S3的顺序不可发生改变。

如果调换顺序:

【node2------->node2.5】这一步执行完后,node2的指针就会指向node2.5【node2.nextnode()=node2.5】,node3没有任何指针指向他

【node2.5----->node2.nextnode()】在执行这一步的时候,node2.5的指针将指向自己

java实现单链表的增删功能的更多相关文章

  1. Java实现单链表的增删查改及逆置打印

    //所提供的接口 LinkList.java package Struct; public interface LinkList {//判断链表为空public boolean linkListIsE ...

  2. JAVA数据结构——单链表

    链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元 ...

  3. Java实现单链表的各种操作

    Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素   4.实现链表的反转   5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ...

  4. 使用java实现单链表(转载自:https://www.cnblogs.com/zhongyimeng/p/9945332.html)

    使用java实现单链表----(java中的引用就是指针)转载自:https://www.cnblogs.com/zhongyimeng/p/9945332.html ? 1 2 3 4 5 6 7 ...

  5. Java带头节点单链表的增删合并以及是否有环

    带头节点单链表 1.优势: 1)当链表为空时,指针指向头结点,不会发生null指针异常 2)方便特殊操作(删除第一个有效节点或者插入一个节点在表头) 3)单链表加上头结点之后,无论单链表是否为空,头指 ...

  6. Java数据结构--单链表

    #java学习经验总结------单链表的建立与结点的增删 在该链表结点有data数据,并且还有cpu,分给cpu随机的时间片,根据时间片大小进行结点data的排序 链表结点的建立 class Lin ...

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

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

  8. 用Java实现单链表的基本操作

    笔试题中经常遇到单链表的考题,下面用java总结一下单链表的基本操作,包括添加删除节点,以及链表转置. package mars; //单链表添加,删除节点 public class ListNode ...

  9. java实现单链表常见操作

    一.概述: 本文主要总结单链表常见操作的实现,包括链表结点添加.删除:链表正向遍历和反向遍历.链表排序.判断链表是否有环.是否相交.获取某一结点等. 二.概念: 链表: 一种重要的数据结构,HashM ...

随机推荐

  1. 一个简单的Springmvc应用开发例子

            SpringMVC应用的配置步骤:         1,将所有的jar包导入到lib文件夹下:             jar在spring框架包-->libs-->所有的 ...

  2. linux 运维 nginx服务器

    nginx(web服务器) nginx是一个高性能的http和反向代理服务器,同时也是一个imap/pop3/smtp 代理服务器比apache简单官网:http://nginx.org nginx配 ...

  3. 判断ios或者android

    <script type="text/javascript"> $(function () { // android和iso下载链接 var u = navigator ...

  4. 如何编译linux第一个模块 hellomod.ko

    Linux下的驱动程序也没有听上去的那么难实现,我们可以看一下helloworld这个例子就完全可以了解它的编写的方式! 我们还是先看一个这个例子,helloworld 1. [代码]hellowor ...

  5. thinkphp中使用phpexcel读取所有的行记录

    ThinkPHP3.2使用phpexcle 将phpexcel放到Think\Org\PHPExcel中 public function index() { import('Org.PHPExcel. ...

  6. iframe父页面获取子页面的参数

    1.父页面中的iframe <iframe name="parentPage"></iframe> 2.子页面中元素的属性 <input type=& ...

  7. JSP常见的三个编译指令

    JSP常见的三个编译指令 1.page指令   是针对当前页面的指令 2.include指令    用于指定包含另一个页面 3.taglib指令    用于定义和访问自定义标签

  8. Http请求封装基类HttpHelper.cs

    HttpHelper请求封装基类,支持get请求和POS请求http接口交互,为后面接口交互做准备. 1.HttpHelper帮助基类 using System; using System.Colle ...

  9. 利用GDI+在Winfrom绘制验证码

    string yzm: private void yangzhengma() { Bitmap bt = new Bitmap(70,22);//创建位图对象 Graphics gs = Graphi ...

  10. freemarker自定义标签(二十一)

    一,讲解一 1.自定义标签说明 宏变量存储模板片段可以被用作自定义指令macro 2.示例说明 <html> <head> <meta http-equiv=" ...