您的位置:首页 > 其它

[LinkedList]——逻辑理解

2016-03-22 21:47 218 查看
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{
n.setPrevious(last);//直接往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;
}
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 void remove(int index){
Node temp=null;
if (first!=null) {
temp=first;
for (int i = 0; i < index; 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++;
}
}
private void rangeCheck(int index){
if (index<0||index>=size) {
try {
throw new Exception();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MyLinkedList list=new MyLinkedList();
list.add("bbb");
list.add(1,"llll");
list.add("23123");
System.out.println(list.size());
System.out.println(list.get(1));
}
}
        节点类:
public class Node {
Node previous;//上一个节点
Object obj;
Node next;//节点类型
public Node(){
}
public Node(Node previous, Object obj, Node next) {
super();
this.previous = previous;
this.obj = obj;
this.next = 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;
}
}
    下图的p,o,n类型,对应理解LinkedList的流程很重要。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linkedlist