java中链表的底层实现_Java 链表的底层实现

package com.soto.collection;

/**

* add 和 get方法

*

* @author 王

*

*/

public class SxtLinkedList /*implements List*/ { //双向链表,

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 Object get(int index){

rangeCheck(index);

Node temp = node(index);

if(temp!=null){

return temp.obj;

}

return null;

}

private void rangeCheck(int index){

if(index<0||index>size){

try {

throw new Exception();

} catch (Exception e) {

e.printStackTrace();

}

}

}

public Node node(int index){

Node temp = null;

if(first != null){

temp = first;

for(int i=0;i

temp = temp.next;

}

}

return temp;

}

public void remove(int index){

Node temp = null;

if (first != null) {

temp = first;

for(int i =0 ; i

temp = temp.next;

}

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) {

SxtLinkedList list = new SxtLinkedList();

list.add("aaa");

list.add(1, "BBB");

list.add("bbb");

list.add("ccc");

//list.remove(1);

System.out.println(list.get(1));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值