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函数中就不行了呢。我知道这是内部类的范畴

  • 相关阅读:
    JS数据结构第二篇---链表
    原来你是这样的---原型和原型链
    JS数据结构第一篇---算法之复杂度判断
    程序员的数学
    一位码农的转行
    如何看待程序媛们的职场焦虑和未来职业规划?
    如何快速融入团队并成为团队核心(九)
    如何快速融入团队并成为团队核心(八)
    使用ASP.NET Core构建RESTful API的技术指南
    如何快速融入团队并成为团队核心(七)
  • 原文地址:https://www.cnblogs.com/winAlaugh/p/5405955.html
Copyright © 2011-2022 走看看