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

  • 相关阅读:
    msvcr120.dll、msvcp120.dll注册失败
    Qt初级-Qt格式
    二级指针的申请与释放
    搜索指定目录下的所有文件或者指定文件(可用于多级目录)
    Java--多线程处理--模拟车辆进入入收费
    Sqlit--学习教程(建立数据库表)
    Sqlit--学习教程(基本操作1)
    Sqlit--学习教程()
    Sqlit--学习教程(命令)
    Sqlit--学习教程(简介)
  • 原文地址:https://www.cnblogs.com/winAlaugh/p/5405955.html
Copyright © 2011-2022 走看看