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视频 多线程 非中文自动翻译
			声明:我写的所有文章都是发在博客园的,我看到其他复制粘贴过去的 连个出处也不写,直接打上自己的水印...真是没的说了. 前言:前段时间搞了一些爬视频的项目,代码都写好了,这里写文章那就在来重新分析一遍 ... 
