首页 > 编程语言 > 详细

java链表的基本使用 代码

时间:2020-04-06 21:45:34      阅读:65      评论:0      收藏:0      [点我收藏+]

package test;
 interface ILink<E>{
     public void add(E e);//添加链表数据
     public int size();//返回链表长度
     public boolean isEmpty();//判断链表是否为空
     public Object [] toArray();//返回集合数据
     public E get(int index);//返回指定索引的数据
     public void set(int index,E data);//修改值
     public boolean contains(E data);//判断指定数据是否存在
 }
 class LinkImpl<E> implements ILink<E>{
     private class Node{//保存节点的数据关系
         private E data;
         private Node next;//保存下一个引用
         private Node(E data) {
             this.data=data;
         }
         //第一次调用
         public void addNode(Node newNode) {
             //保存新的Node数据
            if(this.next==null) {
                this.next =newNode;
            }else {
                this.next.addNode(newNode);
            }
         }
         public void toArrayNode() {
             LinkImpl.this.returnData [LinkImpl.this.foot ++]=this.data;
         if(this.next!=null) {
             this.next.toArrayNode();
         }
         }
         public E getNode(int index) {
             if(LinkImpl.this.foot ++ ==index) {
                 return this.data;        
             }
             else {
                return this.next.getNode(index);        
             }
         }
         public void setNode(int index,E data) {
             if(LinkImpl.this.foot ++ ==index) {
                   this.data=data;
                
             }
             else {
                  this.next.getNode(index);
            
             }
         }
    public boolean containsNode(E data) {
        if(this.data.equals(data)) {
            return true;
        }
        else{
              if(this.next==null) {
                  return false;
              }else {
                  
                 return this.next.containsNode(data);
              }
          }
    }
        
        
        
     }
     private Node root;
     //增加数据
     private int count;
     private int foot;
     private Object[] returnData;
     public void add(E e) {
         if(e==null) {
             return ;
         }else {
             Node newNode = new Node(e);//创建新节点
             if(this.root==null) {
                 this.root=newNode;
             }
             else {
                 this.root.addNode(newNode);
             }
            
             this.count++;
         }
     }
    @Override
    public int size() {
        // TODO Auto-generated method stub
        return this.count;
    }
    @Override
    public boolean isEmpty() {
         //this.count==0
        return this.root==null;
    }
    @Override
    public Object[] toArray() {
         if(this.isEmpty()) {
             return null;
         }
         this.foot=0;
         this.returnData=new Object[this.count];
         this.root.toArrayNode();
         return this.returnData;
    
    }
    @Override
    public E get(int index) {
     if(index>this.count) {
         return null;
     }
     this.foot=0;
    return this.root.getNode(index);
    }
    @Override
    public void set(int index, E data) {
         if(index>=this.count) {
             return ;
         }
         this.foot=0;
         this.root.setNode(index, data);
        
    }
    @Override
    public boolean contains(E data) {
         if(data==null) {
             return false;
         }
        return this.root.containsNode(data);
    }
 }
 
 
    
public class Test1 {
    
public static void main(String[] args) throws Exception {
 LinkImpl<String> all = new LinkImpl<String>();
System.out.println("size:"+all.size());
 all.add("hello");
all.add("wo");
System.out.println("-------------");
System.out.println("size:"+all.size());
Object [] array = all.toArray();
for(Object obj:array) {
    System.out.print(obj);
}
System.out.println("数据获取");
System.out.println(all.get(1));
System.out.println(all.contains("wo"));
System.out.println(all.contains("women"));
}

}

java链表的基本使用 代码

原文:https://www.cnblogs.com/yxj808/p/12644306.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!