java实现单链表的增删功能
JAVA 实现单链表的增删功能
package linked;
class LinkedTable{
}
public class LinkedTableTest {
    public static void main(String[] args)
    {
        //构造单链表
        Node node1=new Node("name1");
        Node node2=new Node("name2");
        Node node3=new Node("name3");
        Node node4=new Node("name4");
        Node node5=new Node("name5");
        node1.setNextNode(node2);
        node2.setNextNode(node3);
        node3.setNextNode(node4);
        node4.setNextNode(node5);
        System.out.println("*******初始链表*******");
        //循环遍历单链表
        outLinked(node1);
        System.out.println();
        //插入节点在node2的后面
        addNode(node2);
        System.out.println("*****插入node2.5后的链表*****");
        //循环遍历单链表
        outLinked(node1);
        System.out.println();
        //删除节点
        node2.setNextNode(node3);
        System.out.println("*******删除node2.5*******");
        //循环遍历单链表
        outLinked(node1);
        System.out.println();
    }
    public static void outLinked(Node node1){
        Node node= new Node();
        node.setNextNode(node1);
        do
        {
            node=node.getNextNode();
            System.out.print(node.getName()+"----");
        }while(node.getNextNode()!=null);
    }
    public static void addNode(Node preNode)
    {
        Node node_add = new Node("name2.5");
        node_add.setNextNode(preNode.getNextNode());
        preNode.setNextNode(node_add);
    }
}
class Node {
    private String name;
    private Node nextNode;
    public void setName(String name)
    {
        this.name=name;
    }
    public void setNextNode(Node nextNode)
    {
        this.nextNode=nextNode;
    }
    public String getName()
    {
        return this.name;
    }
    public Node getNextNode()
    {
        return this.nextNode;
    }
    public Node(String name)
    {
        this.name=name;
        this.nextNode=null;
    }
    public Node( )
    {
    }
}
单链表添加节点:
public static void addNode(Node preNode)
{
Node node_add = new Node("name2.5");
node_add.setNextNode(preNode.getNextNode());
preNode.setNextNode(node_add);
}

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实现单链表的增删功能的更多相关文章
- Java实现单链表的增删查改及逆置打印
		
//所提供的接口 LinkList.java package Struct; public interface LinkList {//判断链表为空public boolean linkListIsE ...
 - JAVA数据结构——单链表
		
链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元 ...
 - Java实现单链表的各种操作
		
Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素 4.实现链表的反转 5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ...
 - 使用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 ...
 - Java带头节点单链表的增删合并以及是否有环
		
带头节点单链表 1.优势: 1)当链表为空时,指针指向头结点,不会发生null指针异常 2)方便特殊操作(删除第一个有效节点或者插入一个节点在表头) 3)单链表加上头结点之后,无论单链表是否为空,头指 ...
 - Java数据结构--单链表
		
#java学习经验总结------单链表的建立与结点的增删 在该链表结点有data数据,并且还有cpu,分给cpu随机的时间片,根据时间片大小进行结点data的排序 链表结点的建立 class Lin ...
 - java实现单链表的增删改以及排序
		
使用java代码模拟单链表的增删改以及排序功能 代码如下: package com.seizedays.linked_list; public class SingleLinkedListDemo { ...
 - 用Java实现单链表的基本操作
		
笔试题中经常遇到单链表的考题,下面用java总结一下单链表的基本操作,包括添加删除节点,以及链表转置. package mars; //单链表添加,删除节点 public class ListNode ...
 - java实现单链表常见操作
		
一.概述: 本文主要总结单链表常见操作的实现,包括链表结点添加.删除:链表正向遍历和反向遍历.链表排序.判断链表是否有环.是否相交.获取某一结点等. 二.概念: 链表: 一种重要的数据结构,HashM ...
 
随机推荐
- PCI和PCIE插槽有什么区别?
			
PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写,它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽.PCI插槽也是主板带有最 ...
 - Android(Java)利用findbugs进行代码静态检查
			
主要介绍利用java静态代码检查工具findbugs进行代码检查,包括其作用.安装.使用.高级功能(远程review和bug同步). 虽然Android提供了Test Project工程以及instr ...
 - 【memcache】windos下 memcache更改默认的端口和最大使用内存
			
1>用内网ip的方式提供web应用服务器调用,不允许直接通过外网调用,如将memcache服务器放在192.168.1.55的服务器上 2>修改端口,如改为11200 3>分配内存, ...
 - Linux查看网络的联机状态
			
Linux查看网络的联机状态 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ netstat -a^C unix 3 [ ] 流 已连接 14923 @/tmp ...
 - VS2005、vs2008+WinXPDDK+DDKWizard配置驱动开发环境
			
所需软件下载地址如下(均为有效资源链接,速度都比较可以): vs2005: http://221.224.22.210/downloadsawyer/VS.Net2005简体中文版.rar wi ...
 - devDependencies和dependencies的版本写法
			
devDependencies和dependencies的版本写法 指定版本:比如1.2.2,遵循大版本.次要版本.小版本的格式规定,安装时只安装指定版本. 波浪号(tilde)+指定版本:比如~1. ...
 - Jupyter notebook Tensorflow GPU Memory 释放
			
Jupyter notebook 每次运行完tensorflow的程序,占着显存不释放.而又因为tensorflow是默认申请可使用的全部显存,就会使得后续程序难以运行.暂时还没有找到在jupyter ...
 - WPF基础篇之移动特效
			
前一段时间,在做动画特效的时候,在网上看到了一个水平移动控件的例子.里面用到了RenderTransform特效.在网上查找资料发现了一篇基础的文章: 文章源地址:http://www.ithao12 ...
 - docker学习系列(三):docker镜像的分层结构
			
docker的镜像分层 docker里的镜像绝大部分都是在别的镜像的基础上去进行创建的,也就是使用镜像的分层结构. 实验 比如说使用dockerfile去创建一个最简单的hello镜像.创建好对应的d ...
 - python爬取youtube视频 多线程 非中文自动翻译
			
声明:我写的所有文章都是发在博客园的,我看到其他复制粘贴过去的 连个出处也不写,直接打上自己的水印...真是没的说了. 前言:前段时间搞了一些爬视频的项目,代码都写好了,这里写文章那就在来重新分析一遍 ...