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

  • 相关阅读:
    sql server中的 SET NOCOUNT ON 的含义
    SQL Server 中的嵌套事务与@@TranCount(转)
    数据库中的主键与外键的关系,通俗易懂
    模板制作
    DELPHI中MDI子窗口的关闭和打开
    Entity Framework 基础
    WPF使用HierarchicalDataTemplate绑定Dictionary生成TreeView
    WPF新手之如何将数据绑定到TreeView
    WPF数据验证(5)―― 错误模板
    WPF DataGrid 获取选中 一行 或者 多行
  • 原文地址:https://www.cnblogs.com/winAlaugh/p/5405955.html
Copyright © 2011-2022 走看看