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

  • 相关阅读:
    ubuntu 18.04 修改 固定ip
    java 加载properties
    Free 4 months Serial License Key Of Outpost Security Suite Pro 8.1
    免费申请一年版Eset NOD32 Antivirus激活码(无限制)- 已失效
    微软软件运行库下载
    Bitdefender Total Security 2014 Free 6 Months & 12 month License Key
    如何将Virtualbox和VMware虚拟机相互转换[译文211]
    Virtualbox安装Windows 8.1遇到0x000000C4错误解决办法
    VirtualBox 4.3“不能为虚拟电脑 打开一个新任务”解决方案
    docx文件怎样打开
  • 原文地址:https://www.cnblogs.com/winAlaugh/p/5405955.html
Copyright © 2011-2022 走看看