ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java 链表的实现

2022-05-20 19:04:32  阅读:90  来源: 互联网

标签:Java 实现 data void next 链表 int root public


public class TestLinkList {

    public static void main(String[] args) {
        NodeManager nm = new NodeManager();
        System.out.println("初始化链表节点");
        nm.add(5);
        nm.add(4);
        nm.add(3);
        nm.add(2);
        nm.add(1);
        nm.showNodes();
        System.out.println("删除节点之后");
        nm.delete(3);
        nm.showNodes();
        System.out.println("修改结点之后");
        nm.update(5, 6);
        nm.showNodes();
        System.out.println("寻找节点");
        System.out.println(nm.find(2));
    }
}

class NodeManager{
    
    private Node root;
    
    public void add(int data) {
        if(root==null) {
            root = new Node(data);
        }
        else {
            root.addNode(data);
        }        
    }
    
    public void delete(int data) {
        if(root!=null) {
            if(root.getData()==data) {
                root = root.next;
            }
            else {
                root.delNode(data);
            }
        }
    }
    
    public void update(int oldData,int newData) {
        if(root!=null) {
            if(root.getData()==oldData) {
                root.setData(newData);
            }
            else {
                root.updateNode(oldData, newData);
            }
        }
    }
    
    public boolean find(int data) {
        if(root==null) {
            return false;        
        }
        return root.findNode(data);        
        
    }
    
    public void showNodes() {
        if(root!=null) {
            System.out.println(root.data+" ");
            root.printNodes();
        }
        else {
            System.out.println("当前链表没有存储内容");
        }
    }
    
    public void showNodes2()
    {
        root.printNodes2();
    }
    
    //节点类,由内部类实现。最好不用内部类。
    private class Node{
        private int data;
        private Node next;
        
        public Node(int data) {
            this.data = data;
        }
        
        public int getData() {
            return this.data;
        }
        
        public void setData(int data) {
            this.data = data;
        }
        
        //添加节点
        public void addNode(int data) {
            if(this.next==null) {
                this.next = new Node(data); 
            }
            else {
                this.next.addNode(data);
            }
        }
        
        //删除节点
        public void delNode(int data) {
            if(this.next.getData()==data) {
                this.next = this.next.next;
            }
            else {
                this.next.delNode(data);
            }
        }
        
        //修改节点
        public void updateNode(int oldData,int newData) {
            if(this.next.getData()==oldData) {
                this.next.setData(newData);
            }
            else {
                this.next.updateNode(oldData, newData);
            }
        }
        
        //寻找节点
        public boolean findNode(int data) {
            if(this.getData()==data) {
                return true;
            }
            else {
                if(this.next!=null) {
                    return this.next.findNode(data);
                }                
            }            
            return false;
        }
        
        //打印节点
        public void printNodes() {
            if(this.next!=null) {
                System.out.println(this.next.data+" ");
                this.next.printNodes();
            }
        }
        
        //非递归方式打印节点
        public void printNodes2() {
            Node temp = this;
            while(temp!=null) {
                System.out.println(temp.data);
                temp = temp.next;
            }
        }
    }
}

 

标签:Java,实现,data,void,next,链表,int,root,public
来源: https://www.cnblogs.com/javafufeng/p/16293441.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有