package com.louisly.java;
public class LYArrayLink {
private int currentCount = 0;
private LYNode header = null;
private LYNode lastNode = null;
public void addObject(Object obj) {
if (obj == null) return;
currentCount++;
LYNode node = new LYNode();
node.data = obj;
if (lastNode != null) {
lastNode.next = node;
lastNode = node;
} else {
lastNode = node;
}
if (header == null) {
header = node;
}
}
public void removeObject(Object obj) {
LYNode lastNode = null;
LYNode node = header;
Object data = null;
while (node != null) {
data = node.data;
if (data == obj) {
if (lastNode != null) {
lastNode.next = node.next;
} else {
// �Ƴ���һ��Ԫ��
header = node.next;
}
currentCount--;
} else {
lastNode = node;
}
node = node.next;
}
}
public void removeAtIndex(int index) {
if (header == null) return; // error: out of bounces
LYNode lastNode = null;
LYNode node = header;
for (int i = 0; i < index; i++) {
if (node != null) {
lastNode = node;
node = node.next;
} else {
return; // error: out of bounces
}
}
if (index == 0) {
header = node.next;
} else {
lastNode.next = node.next;
}
currentCount--;
}
public Object get(int index) {
if (header == null) return null; // error: out of bounces
LYNode node = header;
for (int i = 0; i < index; i++) {
node = node.next;
if (node == null) {
return null;
}
}
return node.data;
}
public int size() {
return currentCount;
}
private static class LYNode {
Object data;
LYNode next;
}
}