public class Node {
//数据部分
private int data;
//下一个节点
private Node next;
public Node() {
}
2、定义链表类
定义MyLink1类,包含头结点、尾结点、链表大小等属性
实现链表的基本操作方法,包括添加节点、查找节点、删除节点、插入节点、判断元素是否在链表中等
public class MyLink1 {
private Node head;//头结点
private Node last;//最后一个节点
private int size;//节点数量
3、添加节点方法
在MyLink1类中定义方法add,用来添加节点
如果链表为空,直接创建一个新的头结点
否则,寻找到尾结点并在其后面添加新的节点示例代码:public boolean add(int nums) {
if (head == null) {
head = new Node(nums);
last = head;
size++;
} else {
Node node = new Node(nums);
last.setNext(node);
last = node;
size++;
}
return true;
}
4、查找节点方法
在MyLink1类中定义方法find,用来查找节点
返回头结点public Node find() {
return head;
}
5、获取头结点和尾结点的数据方法
在MyLink1类中定义方法getHead和getTail,用来返回头结点和尾结点的数据
public int getHead() {
if (head != null) {
return head.getData();
}
return 0;
}
public int getTail() {
if (head == null) {
return 0;
}
if (last.getNext() != null) {
return last.getNext().getData();
} else {
return last.getData();
}
}
6、删除节点方法
在MyLink1类中定义方法delete,用来删除节点
先判断链表是否为空,再遍历链表寻找要删除的节点
如果找到了,就将该节点的前驱节点指向该节点的后继节点
同时更新节点数量
//删除节点
public void delete(int nums) {
boolean tag = false;
if (head == null) {
System.out.println("链表是空的");
} else {
Node node = head;
if (head.getData() == nums) {
head = node.getNext();
tag = true;
} else {
Node nextnode;
while (node.getNext() != null) {
nextnode = node.getNext();
if (nextnode.getData() == nums) {
node.setNext(nextnode.getNext());
tag = true;
} else {
node = nextnode;
}
}
}