zoukankan      html  css  js  c++  java
  • Java写的一个LinkedList

    MyLinkList实现代码

    package MyLinkedList;
    
    import java.lang.reflect.ParameterizedType;
    
    
    public class MyLink <T>
    {
        private Entity<T> header;
        private int size;
        
        public MyLink()
        {
            this.header = new Entity(null,null,null);
            this.size = 0;
            this.header.next = (this.header.previous=this.header);
        }
        
        public void add(T entity)
        {
            //新节点的prev指向头结点 , 新节点的next指向头结点next
            Entity newNode = new Entity(header,entity,header.next);
            //头结点后面原来的节点的prev指向新节点
            this.header.next.previous = newNode;
            //头结点的next指向新节点
            this.header.next = newNode;    
            
            size++;
        }
        
        public void delete(T paramObject)
        {
            Entity local;
            for(local = this.header.next;local!=this.header;local = local.next)
            {
                if(paramObject.equals(local.element))
                {
                    local.next.previous = local.previous;
                    local.previous.next = local.next;
                    local.previous = null;
                    size--;
                    break;
                }
            }
        }
        
        public int indexOf(T paramObject)
        {
            int i = 0;
            Entity local;
            for(local = this.header.next;local!=this.header;local = local.next)
            {
                if(paramObject.equals(local.element))
                    return i;
                i++;
            }
            return -1;
        }
        
        public T getElement(int paramInt)
        {
            return getEntity(paramInt).element;
        }
        
         private Entity<T> getEntity(int paramInt)
         {
             Entity local = this.header;
                
             if(paramInt>=0&&paramInt<this.size)
             {
                 for(int i=0;i<=paramInt;i++)
                     local = local.next;         
             } 
             return local;
         }
         
         public int getLength()
         {
             return this.size;
         }
        
        private class Entity<T>
        {
            T element;
            Entity<T> next;
            Entity<T> previous;
            
            public Entity(Entity<T> previous,T element,Entity<T> next)
            {
                this.element = element;
                this.next = next;
                this.previous = previous;
            }
        }
    
    }

    测试用例

    package MyLinkedList;
    
    import org.junit.Test;
    
    public class Client 
    {
        MyLink<Model> list = new MyLink();
        
        @Test
        public void test()
        {
            list.add(new Model("tom",18));
            list.add(new Model("jeck",22));
            list.add(new Model("asd",21));
            list.add(new Model("toem",19));
            
            Model m = new Model("zen",17);
            list.add(m);
            
            list.add(new Model("wen",23));
            list.add(new Model("baobo",18));
            list.add(new Model("dawei",20));
            
            list.delete(m);
            
            System.out.println(list.getLength());
            
            for(int i=0;i<list.getLength();i++)
                System.out.println(list.getElement(i).getName()+"   ");
            
        }
    }

    Model类

    package MyLinkedList;
    
    public class Model 
    {
        private String name;
        private int age;
        
        public Model(String name,int age)
        {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
        
        
    
    }
  • 相关阅读:
    腾讯课堂目标2017高中数学联赛基础班-2作业题解答-1
    腾讯课堂目标2017初中数学联赛集训队作业题解答-1
    2016猿辅导初中数学竞赛基础特训营作业题
    Markdown的基本语法
    解决网络图片加载出现403错误
    深入理解JS引擎的执行机制
    vue中moment.js的使用
    js中字符串 stringObject 的 replace() 方法
    Object.keys()方法
    webpack的require.context()实现路由“去中心化”管理
  • 原文地址:https://www.cnblogs.com/xiayangqiushi/p/3337087.html
Copyright © 2011-2022 走看看