zoukankan      html  css  js  c++  java
  • 链表

    链表的简单的增加结点与打印:

    范例:

    class Node{
        private String data ;
        private Node next ;
    
        public Node(String data){
            this.data = data ;
        }
        public void setNext(Node next){
            this.next = next;
        }
        public Node getNext(){
            return this.next ;
        }
        public String getData(){
            return this.data ;
        }
        public void addNode(Node node){
            if(this.next == null){
                this.next = node ;
            }else{
                this.next.addNode(node) ;
            }
        }
        public void printNode(){
              System.out.println(this.data) ;
              if(this.next != null){
                this.next.printNode();
              } 
        }
    }
    class Link{
        private Node root ;
        public void add(String data){
            Node newNode = new Node(data) ;
    
            if(root == null)
                this.root = newNode;
            else{
                this.root.addNode(newNode) ; 
            }
        }
        public void print(){
            root.printNode() ;      
        }
    }
    
    public class Test{
        public static void main(String args[]){
            Link link = new Link () ;
            link.add("hello") ;
            link.add("world") ;
            link.add("haha") ;
            link.print();
        } 
    }
    

     2.开发可用链表:

    使用链表实现数据的增加修改删除操作:

    在开发中Node类不可以直接使用。这个时候使用内部类是一个不错的选择。将内部类用private定义。

    class Link{
       
        private class Node{
            private String data ;
            private Node next ;
    
            public Node (String 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(String data){
                if(data.equals(this.data))
                    return true;
                else {
                    if(this.next != null)
                        return this.next.containsNode(data);
                    else 
                        return false ;
                }
            
            }
            public String getNode(int index){
                 if(Link.this.foot ++ == index){
                    return this.data ;
                 } else {
                    return this.next.getNode(index) ;
                 }
            }
            public void setNode(int index ,String data){
                if(Link.this.foot ++ == index){
                    this.data = data ;
    
                }
                else{
                    this.next.setNode(index,data) ;
                }
            }
            public void removeNode(Node previous ,String 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 String [] retArray ;
        public void add(String 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(String data) {
            if(this.root == null || data == null)
                return false ;
            else {
                return this.root.containsNode(data) ;
            }    
        }
        public String get(int index){
            if(index > this.count)
                return null ;
            else{
                return this.root.getNode(index) ;
            }
            
        }
        public void set(int index , String data) {
            if(index > this.count)
                return  ;
            else{
                this.foot = 0 ;   
                this.root.setNode(index,data) ;
            }
    
        }
        public void remove(String data){
            if(this.contains(data)){
                if(data.equals(this.root.data))
                       this.root = this.root.next ;
                else{
                    this.root.next.removeNode(root,data) ;
                }
    
            }
        }
        public String [] toArray(){     //对象数组实现所有的元素遍历
            if(this.root == null){
                return null ;
            } else {
                this.foot = 0 ;
                this.retArray = new String[this.count] ;
                this.root.toArrayNode() ;
                return this.retArray ;
            }
        }
    
    }
    
    public class Test{
        public static void main(String args[]){
            Link all = new Link() ;
            all.add("hello") ;
            all.add("world") ;
            all.add("zhuopeng") ;
            String [] data = all.toArray() ;
           for( int x =0 ; x < all.size() ;x ++) {
                System.out.println(data[x]) ;
           } 
        
        
        }
    }
    

     插入一个Book类,然后将 String替换为Book,将比较时候的equals替换为 Compare方法

    代码:

    class Book{
        private String title ;
        private double price ;
        public Book(String title,double price) {
            this.title = title ;
            this.price = price ;
         }
        public boolean Compare(Book book){
            if(this.title.equals(book.title) && this.price == book.price)
                return true ;
            else 
                return false ;
        }
        public String getInfo(){
            return "title = " + this.title + "price " + this.price ;
        }
        
    }
    class Link{
       
        private class Node{
            private Book data ;
            private Node next ;
    
            public Node (Book  data){
                this.data = data ;
            }
            public void add(Node newNode){
                if(this.next  == null)
                    this.next = newNode;
                else{
                    this.next.add(newNode) ;
                }
            }
          
            public boolean containsNode(Book  data){
                if(data.Compare(this.data))
                    return true;
                else {
                    if(this.next != null)
                        return this.next.containsNode(data);
                    else 
                        return false ;
                }
            
            }
            public Book getNode(int index){
                 if(Link.this.foot ++ == index){
                    return this.data ;
                 } else {
                    return this.next.getNode(index) ;
                 }
            }
            public void setNode(int index ,Book  data){
                if(Link.this.foot ++ == index){
                    this.data = data ;
    
                }
                else{
                    this.next.setNode(index,data) ;
                }
            }
            public void removeNode(Node previous ,Book  data) {
                if(data.Compare(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 Book [] retArray ;
        public void add(Book data){
    
            if(data == null)
                return ;
    
            Node newNode = new Node(data) ;
            
            if (root == null)
                root = newNode;
            else {
                this.root.add(newNode) ;
            }
            this.count ++ ;
        }
       
        public int size() {
               return this.count ; 
        }
        public boolean isEmpty(){
            return this.count == 0 ;
        }
        public boolean contains(Book data) {
            if(this.root == null || data == null)
                return false ;
            else {
                return this.root.containsNode(data) ;
            }    
        }
        public Book get(int index){
            if(index > this.count)
                return null ;
            else{
                return this.root.getNode(index) ;
            }
            
        }
        public void set(int index , Book data) {
            if(index > this.count)
                return  ;
            else{
                this.foot = 0 ;   
                this.root.setNode(index,data) ;
            }
    
        }
        public void remove(Book data){
            if(this.contains(data)){
                if(data.Compare(this.root.data))
                       this.root = this.root.next ;
                else{
                    this.root.next.removeNode(root,data) ;
                }
    
            }
        }
        public Book [] toArray(){
            if(this.root == null){
                return null ;
            } else {
                this.foot = 0 ;
                this.retArray = new Book[this.count] ;
                this.root.toArrayNode() ;
                return this.retArray ;
            }
        }
    
    }
    
    public class Test{
        public static void main(String args[]){
            Link all = new Link() ;
            all.add(new Book("hello",10.0) );
            all.add(new Book("world",23.4) );
            all.add(new Book("zhuopeng",40) );
            Book [] data = all.toArray() ;
           for( int x =0 ; x < all.size() ;x ++) {
                System.out.println(data[x].getInfo()) ;
           } 
        
        
        }
    }
    
  • 相关阅读:
    我们失去了,我们又没有失去什么
    人过 40
    KPI绩效考核为何在国内不管用?
    再也不必当心我的密码了,多个SAP 客户端自动输入密码
    大器晚成
    人际能量相吸定律
    SQL SERVER函数——表值函数的处理
    MS-SQL SERVER单列合并的四种常用方法
    实战 SQL Server 2008 数据库误删除数据的恢复
    唉,怎么一眨眼就老了!
  • 原文地址:https://www.cnblogs.com/da-peng/p/5120818.html
Copyright © 2011-2022 走看看