java LinkedList简单实现

时间:2018/7/27

简单是实现了LinkedList的几个方法,还是JAVA好啊 ,没有指针

就是对链表的一些简单操作

package c11;

public class CopyLinkedList {
    private Node first;
    private Node last;
    
    private int size;
	
    public void add(Object obj){
    	Node n = new Node();
    	//如果第一个节点是空的
    	if(first == null){
    		n.setPrevious(null);
    		n.setObj(obj);
    		n.setNext(null);
    		
    		first = n;
    		last = n;
    	}else{
    		//直接往last节点后加新的
    		n.setPrevious(last);
    		n.setObj(obj);
    		n.setNext(null);
    		
    		last.setNext(n);
    		
    		last = n;
    	}
    	size++;
    }
    
    public int size(){
    	return size;
    }
    
    public Node node(int index){
    	Node temp = null;
    	if(first != null){
    		
    		//当前遍历的对象
    		temp = first;
    		for(int i = 0;i<index;i++){
    			temp = temp.next;
    		}
    	}
    	return temp;
    }
    public Object get(int index){
    	
    	//这里还有一个越界的判断
    	Node temp = node(index);
    	return temp.obj;
    }
    
    public void remove(int index){
    	Node temp = node(index);
    	if(temp!=null){
    		//获取此节点的前一个节点
    	    Node up = temp.previous;
    	    Node down = temp.next;
    	    //将此节点的前一个节点与后一个节点连接
    	    up.next = down;
    	    down.previous = up;
    	    size--;
    	}    	
    }
    
    public void add(int index,Object obj){
        Node temp = node(index);
        Node newNode = new Node();
        newNode.obj = obj;
        if(temp != null){
        	Node up = temp.previous;
        	up.next = newNode;
        	newNode.previous = up;
        	newNode.next = temp;
        	temp.previous = newNode;
        	size++;
        }
    }
    
    public static void main(String[] args) {
		CopyLinkedList list = new CopyLinkedList();
		list.add("aaa");
		list.add("bbb");
		list.add(1, "ccc");
		System.out.println(list.size());
		System.out.println(list.get(1));
		//list.remove(1);
		System.out.println(list.size());
	}
}

//表示一个节点 
class Node{
	Node previous;
	Object obj;
	Node next;
	public Node getPrevious() {
		return previous;
	}
	public void setPrevious(Node previous) {
		this.previous = previous;
	}
	public Object getObj() {
		return obj;
	}
	public void setObj(Object obj) {
		this.obj = obj;
	}
	public Node getNext() {
		return next;
	}
	public void setNext(Node next) {
		this.next = next;
	}
	
	
}

猜你喜欢

转载自blog.csdn.net/qq_35815781/article/details/81251621