StudentNode
package com.zhangyu.linklisttest2.linkedlist;
import java.util.Objects;
public class StudentNode {
int id;
String name;
int data;
StudentNode next;
public StudentNode(int id, String name, int data) {
this.id = id;
this.name = name;
this.data = data;
next = null;
}
@Override
public String toString() {
return "StudentNode{" +
"id=" + id +
", name='" + name + '\'' +
", data=" + data +
", next=" + next +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
StudentNode node = (StudentNode) o;
return id == node.id &&
data == node.data &&
Objects.equals(name, node.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name, data, next);
}
}
StudentLinkedList
package com.zhangyu.linklisttest2.linkedlist;
import android.util.Log;
public class StudentLinkedList {
private static final String TAG = "StudentLinkedList";
public StudentNode first;
public StudentNode last;
public boolean isEmpty() {
return first == null;
}
public void print() {
StudentNode current = first;
while (current != null) {
String s = current.toString();
Log.e(TAG, "print: " + s);
current = current.next;
}
}
public void insert(int id, String name, int data) {
StudentNode node = new StudentNode(id, name, data);
if (this.isEmpty()) {
first = node;
last = node;
} else {
last.next = node;
last = node;
}
}
public void delete(StudentNode node) {
if (isEmpty()) {
Log.e(TAG, "delete: list is empty");
return;
}
if (first.equals(node)) {
Log.e(TAG, "delete: 删除头结点");
first = first.next;
}
else if (last.equals(node)) {
Log.e(TAG, "delete: 删除尾节点");
StudentNode tmpNode = first;
while (tmpNode.next != last) {
tmpNode = tmpNode.next;
}
tmpNode.next = last.next;
last = tmpNode;
}
else {
StudentNode curNode = first.next;
StudentNode preNode = first;
while (curNode != null && !curNode.equals(node)) {
curNode = curNode.next;
preNode = preNode.next;
}
if (curNode != null && curNode.equals(node)) {
preNode.next = curNode.next;
Log.e(TAG, "delete: 删除中间节点");
} else {
Log.e(TAG, "delete: 该节点不存在");
}
}
Log.e(TAG, "delete: 结束");
}
}
Main
package com.zhangyu.linklisttest2;
import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import com.zhangyu.linklisttest2.linkedlist.StudentLinkedList;
import com.zhangyu.linklisttest2.linkedlist.StudentNode;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StudentLinkedList linkedList = new StudentLinkedList();
linkedList.insert(1,"张三",93);
linkedList.insert(2,"李四",94);
linkedList.insert(3,"王五",95);
linkedList.insert(4,"赵六",96);
linkedList.print();
Log.e(TAG, "delete" );
StudentNode node = new StudentNode(4,"赵六",962);
linkedList.delete(node);
linkedList.print();
}
}
节点不存在的情况
删除头结点
删除尾节点
删除中间节点