java 实现 单链表
class Node{
    public int val;
    public Node next;
    public Node(int val){
        this.val=val;
    }
}
class LinkList{
    private Node head;
    private Node tail;
    //链表对象增加节点
    public void addNode(Node node){
        if (this.head==null){ //链表初始化,第一个节点
            this.head=node;
            this.tail=node;
            this.tail.next=null;
        }
        else //链表最后挂载节点
        {
            this.tail.next=node;
            this.tail=node;
        }
    }
    //查询节点
    public Node getNode(int val)
    {
        Node temp=this.head;
        while (temp!=null)
        {
            if (temp.val==val)
            {
                return temp;
            }
            temp=temp.next;
        }
        return null;
    }
    //修改节点的值
    public void updateNode(int val,int value){
        Node temp=this.head;
        while (temp!=null)
        {
            if (temp.val==val)
            {
                temp.val=value;
            }
            temp=temp.next;
        }
    }
    //删除节点
    public Node deleteNode(int val){
        Node temp=this.head;
        if (this.head.val==val)
        {
            this.head=this.head.next;
            return temp;
        }
        while (temp.next!=null)
        {    
            if (temp.next.val==val)//直接判断的当前节点的下一个节点的值;
                                                      //所以必须判断下一个节点不能为null,即只判断到倒数第二个节点即可
            {
                Node delNode=temp.next;
                temp.next=temp.next.next;  //当前节点直接连接下一个节点的下一个节点 从而实现删除,当前节点的下一个节点
                return delNode;
            }
            temp=temp.next;
        }
        return null;
    }
    //打印所有节点的值
    public void getAllNodes(){
        Node temp=this.head;
        while (temp!=null)
        {
            System.out.print(temp.val+" ");
            temp=temp.next;
        }
        System.out.println();
    }
}
public class TestLink
{
    public static void main(String[] args){
        LinkList ll=new LinkList();
        ll.addNode(new Node(1));
        ll.addNode(new Node(2));
        ll.addNode(new Node(3));
        ll.addNode(new Node(4));
        if (ll.getNode(3)!=null)
        {
            System.out.println(ll.getNode(3).val);
        }
        if (ll.getNode(5)!=null)
        {
            System.out.println(ll.getNode(5).val);
        }
        ll.updateNode(1,100);
        ll.updateNode(4,400);
        ll.updateNode(2,200);
        ll.updateNode(5,500);
        ll.addNode(new Node(5));
        ll.addNode(new Node(6));
        System.out.println("************");
        ll.deleteNode(6);
        ll.getAllNodes();
        ll.deleteNode(3);
        ll.deleteNode(1);
        ll.deleteNode(100);
        System.out.println("************");
        ll.getAllNodes();
    }
}
java 实现 单链表的更多相关文章
- Java实现单链表的各种操作
		Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素 4.实现链表的反转 5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ... 
- java实现单链表的增删功能
		JAVA 实现单链表的增删功能 package linked; class LinkedTable{ } public class LinkedTableTest { public static vo ... 
- JAVA数据结构——单链表
		链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元 ... 
- 使用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实现单链表的基本操作
		笔试题中经常遇到单链表的考题,下面用java总结一下单链表的基本操作,包括添加删除节点,以及链表转置. package mars; //单链表添加,删除节点 public class ListNode ... 
- java实现单链表常见操作
		一.概述: 本文主要总结单链表常见操作的实现,包括链表结点添加.删除:链表正向遍历和反向遍历.链表排序.判断链表是否有环.是否相交.获取某一结点等. 二.概念: 链表: 一种重要的数据结构,HashM ... 
- Java实现单链表的快速排序和归并排序
		本文描述了LeetCode 148题 sort-list 的解法. 题目描述如下: Sort a linked list in O(n log n) time using constant space ... 
- 数据结构——Java实现单链表
		一.分析 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.链表中的数据是以结点来表示的,每个结点由元素和指针构成.在Java中,我们可以将单链表定义成一个类,单链表的基 ... 
- Java实现单链表翻转
		单链表翻转比方有例如以下链表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ3NoaXp0eQ==/font/5a6L5L2T/fontsize ... 
- 用java实现单链表
		对于一个单链表来说,要求有最基本的数据节点以及一些重要的方法. 方法应该有增删改查.定位.输出.获取链表长度.排序.链表读入.链表输出.下面是我用java写的单链表 public class List ... 
随机推荐
- js和jquery通过this获取html标签中的属性值[转藏]
			<html> <head> <script type="text/javascript" src="jquery-1.10.2.min.js ... 
- 【Python学习之五】函数
			环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6 Python不但能非常灵活地定义函数,而且本身内置 ... 
- js  arguments
			偶然碰见一个有意思的题 <script> var length = 10; function fn() { console.log( this.length ); // 10 } var ... 
- Oracle current redo.log出现坏块后的不完全恢复案例一则
			1异常出现 8月30日下午2时左右,接同事电话,说数据库异常宕机了,现在启动不了. 2初步分析 我让现场把alert.log发过来,先看看是什么问题. 关于ORA-00353和ORA-0 ... 
- centos7 intall nvidia driver
			此教程是介绍于 CentOS 7 以上的 Linux 系统中安装 NVIDIA 显卡驱动和 CUDA Toolkit .此文中以 CentOS 7.4 64 bit 为例,显卡型号为 NVIDIA T ... 
- PHP 获取星期
			<?php function getWeek($time = 0) { $week_array=array('日', '一', '二', '三', '四', '五', '六'); //先定义一个 ... 
- Qt去掉treeview项的焦点虚线
			项目做到后期,进行局部美化的时候发现了问题,在treeview框选择状态下会有虚线. 其实,不仅是treeview,tableview,listview,乃至button在有焦点的情况下,都会出现虚线 ... 
- python 之   Django框架(路由系统、include、命名URL和URL反向解析、命名空间模式)
			12.36 Django的路由系统 基本格式: from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图函数,参数,别名) ... 
- HTML-点击Div读取本地文件内容
			<!DOCTYPE html> <html> <div id="container" onclick="choosefile();" ... 
- JavaScript中数组的key-value在对象中倒装的妙用
			对于数组的去重.寻找指定元素的索引,通常我们都是通过遍历来解决,但是在某些应用场景下,将数组的value-key进行倒装,也即将value当做对象的key,key当做对象value,可以极大降低算法的 ... 
