数据节点类
public class Node {
Node nextNode = null;
Object data;
int size = 0;
public Node(Object data) {
this.data = data;
}
public Node() {
}
}
链表类
public class MyList {
Node headNode;
public void add(Object data){
Node newNode = new Node(data);
if (headNode == null) {
headNode = new Node();
headNode.nextNode = newNode;
headNode.size++;
return;
}
Node tempNode = headNode;
while (tempNode.nextNode != null) {
tempNode = tempNode.nextNode;
}
tempNode.nextNode = newNode;
headNode.size++;
}
public void delByIndex(int index) {
if (headNode == null){
return;
}
if (index > headNode.size - 1){
throw new RuntimeException("超出链表最大长度");
}
Node preNode = headNode;
Node curNode = headNode.nextNode;
int num = 0;
while (num < headNode.size) {
if (num == index){
if (headNode.size == 1) {
headNode.nextNode = null;
} else {
preNode.nextNode = curNode.nextNode;
}
headNode.size--;
}
num++;
preNode = preNode.nextNode;
curNode = curNode.nextNode;
}
}
public Object get(int index) {
if (headNode == null) {
return null;
}
if (index > headNode.size - 1) {
throw new RuntimeException("超出链表最大长度");
}
int num = 0;
Node preNode = headNode;
Node curNode = headNode.nextNode;
while (num < headNode.size) {
if (index != num) {
num++;
preNode = preNode.nextNode;
curNode = curNode.nextNode;
} else {
return curNode.data;
}
}
return curNode.data;
}
public void delByData(int data){
if (headNode == null) {
return;
}
Node preNode = headNode;
Node curNode = headNode.nextNode;
int num = 0;
while (num < headNode.size) {
if (data == Integer.parseInt(curNode.data+"")){
if (headNode.size == 1){
preNode.nextNode = null;
} else {
preNode.nextNode = curNode.nextNode;
}
headNode.size--;
}
preNode = preNode.nextNode;
curNode = curNode.nextNode;
num++;
}
}
public void delByData(String data){
if (headNode == null) {
return;
}
Node preNode = headNode;
Node curNode = headNode.nextNode;
int num = 0;
while (num < headNode.size) {
if (data.equals(curNode.data+"")){
if (headNode.size == 1){
preNode.nextNode = null;
} else {
preNode.nextNode = curNode.nextNode;
}
headNode.size--;
}
preNode = preNode.nextNode;
curNode = curNode.nextNode;
num++;
}
}
public void removeAll(){
headNode.nextNode = null;
headNode.size = 0;
}
public void print(){
if (headNode == null){
return;
}
Node curNode = headNode.nextNode;
while (curNode != null){
System.out.print(curNode.data + " ");
curNode = curNode.nextNode;
}
System.out.println();
}
public int size(){
if (headNode == null){
return 0;
}
int size = headNode.size;
return size;
}
}
测试类
public class Test {
public static void main(String[] args) {
MyList myList = new MyList();
myList.add(1);
myList.add(2);
myList.add(3);
myList.add("4");
myList.add("5");
System.out.println(myList.get(4));
myList.delByIndex(4);
System.out.println(myList.size());
myList.print();
}
}