zoukankan      html  css  js  c++  java
  • 自己用20分钟java实现的单向链表(含有增删改查操作)

    package test1;
    // 建立一个链表结构
    public class SingleList {
        //定义头结点指针
        Node head = null;
        //定义链表的节点数据结构
        class Node{
            int val;
            Node next;
            public Node(int val){
                this.val = val;
                next = null;
            }
        }
         //在链表的尾部增加一个节点
        public void add(int num){ 
            Node node = new Node(num);
            if(head==null)
                head=node;
            else
                search().next=node;
        }
        //获得链表尾部的节点
        public Node search(){       
            Node nodelast = head;
            while(nodelast.next!=null){
                nodelast = nodelast.next;
            }
            return nodelast;
        }
        //实现查找链表中特定的某个节点的数据为num并且返回该节点
        public  Node search(int num){ 
            Node nodelast = head;
            while(nodelast.next!=null){
                if(nodelast.val==num)
                    return nodelast;
                nodelast = nodelast.next;
            }
            return null;
        }
        //实现查找链表中特定的某个节点下一个节点的数据为num并且返回该节点
        public  Node searchprevious(int num){ 
            Node nodelast = head;
            while(nodelast.next!=null){
                if(nodelast.next.val==num)
                    return nodelast;
                nodelast = nodelast.next;
            }
            return null;
        }
        //更改链表中的操作
        public void change(int num,int numnew){
            if(search(num)!=null)
                search(num).val=numnew;
        }
        //删除链表的某个节点
        public void delete(int num){
            if(search(num)!=null)
            searchprevious(num).next = search(num).next;
        }
        //打印链表
        public void printList(){
            Node cur = head;
            while(cur!=null){
                System.out.println(cur.val);
                cur=cur.next;
            }
        }
        public static void main(String[] args) {
            SingleList singlelist = new SingleList();
            singlelist.add(1);
            singlelist.add(2);
            singlelist.add(3);
            singlelist.add(4);
            singlelist.change(3,8);
            singlelist.delete(8);
            singlelist.printList();
    //        while(singlelist.head!=null){
    //            System.out.println(singlelist.head.val);
    //            singlelist.head=singlelist.head.next;
    //        }
        }
    
    }

    注意事项 1 在SingleList中定义一个head节点   2 注意如何实现链表删除操作的    3  疑问 在任何非main的函数中都可以 使用Node node = new Node(num);但是为何

    在main函数中就不行了呢。我知道这是内部类的范畴

  • 相关阅读:
    分布式基础学习(1)--分布式文件系统
    吞吐量(Throughput)、QPS、并发数、响应时间(RT)对系统性能的影响
    单点登录SSO的实现原理
    Java基础学习总结——Java对象的序列化和反序列化
    谈谈Memcached与Redis
    Java并发集合的实现原理
    Head First 设计模式 第4章工厂模式
    CentOS Linux 系统 英文 改中文
    Red Hat 9.0 Linux 分辨率修改
    Head First 设计模式 第5章 单例模式
  • 原文地址:https://www.cnblogs.com/winAlaugh/p/5405955.html
Copyright © 2011-2022 走看看