zoukankan      html  css  js  c++  java
  • Object修改链表

    以前学习过链表的时候由于类型的接收不同,每次要重写链表

    下面修改可用链表

    class Link{
        
        private class Node{
            private Object data ;
            private Node next ;
     
            public Node (Object data){
                this.data = data ;
            }
            public void add(Node newNode){
                if(this.next  == null)
                    this.next = newNode;
                else{
                    this.next.add(newNode) ;
                }
            }
            public void print(){
                System.out.println(this.data) ;
                if(this.next == null)
                    return ;
                else {
                    this.next.print() ;
                }
            }
            public boolean containsNode(Object data){
                if(data.equals(this.data))
                    return true;
                else {
                    if(this.next != null)
                        return this.next.containsNode(data);
                    else
                        return false ;
                }
             
            }
            public Object getNode(int index){
                 if(Link.this.foot ++ == index){
                    return this.data ;
                 } else {
                    return this.next.getNode(index) ;
                 }
            }
            public void setNode(int index ,Object data){
                if(Link.this.foot ++ == index){
                    this.data = data ;
     
                }
                else{
                    this.next.setNode(index,data) ;
                }
            }
            public void removeNode(Node previous ,Object data) {
                if(data.equals(this.data)){
                    previous.next = this.next ;       
                } else {
                      
                        this.next.removeNode(this,data) ;
     
                }
            }
            public void toArrayNode(){
                Link.this.retArray[Link.this.foot ++ ] = this.data ;
                if(this.next != null)
                    this.next.toArrayNode() ;
            }
        }
        private Node root ;
        private int count = 0 ;
        private int foot = 0 ;
        private Object [] retArray ;
        public void add(Object data){
     
            if(data == null)
                return ;
     
            Node newNode = new Node(data) ;
             
            if (root == null)
                root = newNode;
            else {
                this.root.add(newNode) ;
            }
            this.count ++ ;
        }
        public void print(){
            this.foot = 0 ;
            if(root == null)
                return ;
            else{
                root.print() ;
            }
        }
        public int size() {
               return this.count ;
        }
        public boolean isEmpty(){
            return this.count == 0 ;
        }
        public boolean contains(Object data) {
            if(this.root == null || data == null)
                return false ;
            else {
                return this.root.containsNode(data) ;
            }   
        }
        public Object get(int index){
            if(index > this.count)
                return null ;
            else{
                return this.root.getNode(index) ;
            }
             
        }
        public void set(int index , Object data) {
            if(index > this.count)
                return  ;
            else{
                this.foot = 0 ;  
                this.root.setNode(index,data) ;
            }
     
        }
        public void remove(Object data){
            if(this.contains(data)){
                if(data.equals(this.root.data))
                       this.root = this.root.next ;
                else{
                    this.root.next.removeNode(root,data) ;
                }
     
            }
        }
        public Object [] toArray(){     
            if(this.root == null){
                return null ;
            } else {
                this.foot = 0 ;
                this.retArray = new Object[this.count] ;
                this.root.toArrayNode() ;
                return this.retArray ;
            }
        }
     
    }
     
    public class Link1{
        public static void main(String args[]){
            Link all = new Link() ;
            all.add("A") ; //String转为Object
            all.add("B") ;
            all.add("C") ;
            all.remove("A") ;//String已经覆写了equals()方法
            Object [] data = all.toArray();
            for(int x = 0 ; x < data.length ; x ++){
                String str = (String)data[x] ; //每一个对象向下转型 Object变为String
                System.out.println(str) ;
            }
    
        }
         
         
    }

    总结:

    Object类对象可以接受一切数据类型,解决了数据统一问题

  • 相关阅读:
    【Daily Scrum】12-03:Sprint 3 Planning
    【Daily Scrum】12-02:Postmortem of sprint 2
    Team Project: 基于windows phone 8平台的PhotoStoryTelling 软件 ——by Qing
    【Daily Scrum】12-26
    【Daily Scrum】12-25
    【Daily Scrum】12-23
    【Daily Scrum】12-22
    【Daily Scrum】12-18
    【Daily Scrum】12-15
    列几点一些软件或APP的Bug和对其建议
  • 原文地址:https://www.cnblogs.com/da-peng/p/5126009.html
Copyright © 2011-2022 走看看