在Java中实现链表数据结构的函数
发布时间:2023-07-01 02:44:05
在Java中实现链表数据结构的函数:
链表是一种常用的数据结构,在Java中实现链表的方法有很多种。下面介绍一种简单的实现方式。
1. 定义链表节点类
class Node {
int data; // 存储节点数据
Node next; // 指向下一个节点的指针
// 构造函数
public Node(int data) {
this.data = data;
this.next = null;
}
}
2. 实现链表类
class LinkedList {
private Node head; // 头节点
// 初始化链表
public LinkedList() {
head = null;
}
// 在链表末尾添加节点
public void append(int data) {
Node newNode = new Node(data);
// 如果链表为空,新节点作为头节点
if (head == null) {
head = newNode;
return;
}
// 遍历链表找到末尾节点
Node lastNode = head;
while (lastNode.next != null) {
lastNode = lastNode.next;
}
// 将新节点添加到末尾
lastNode.next = newNode;
}
// 在链表任意位置插入节点
public void insert(int data, int position) {
Node newNode = new Node(data);
// 如果要在头节点插入
if (position == 0) {
newNode.next = head;
head = newNode;
return;
}
// 遍历链表找到插入位置的前一个节点
Node prevNode = head;
for (int i = 0; i < position - 1; i++) {
prevNode = prevNode.next;
if (prevNode == null) {
throw new IndexOutOfBoundsException("Position out of range");
}
}
// 插入新节点
newNode.next = prevNode.next;
prevNode.next = newNode;
}
// 在链表任意位置删除节点
public void delete(int position) {
// 如果链表为空,直接返回
if (head == null) {
return;
}
// 如果要删除头节点
if (position == 0) {
head = head.next;
return;
}
// 遍历链表找到删除位置的前一个节点
Node prevNode = head;
for (int i = 0; i < position - 1; i++) {
prevNode = prevNode.next;
if (prevNode == null) {
throw new IndexOutOfBoundsException("Position out of range");
}
}
// 如果删除位置大于链表长度,直接返回
if (prevNode.next == null) {
return;
}
// 删除节点
Node deleteNode = prevNode.next;
prevNode.next = deleteNode.next;
}
// 获取链表长度
public int length() {
int length = 0;
Node currentNode = head;
while (currentNode != null) {
length++;
currentNode = currentNode.next;
}
return length;
}
// 打印链表
public void printList() {
Node currentNode = head;
while (currentNode != null) {
System.out.print(currentNode.data + " ");
currentNode = currentNode.next;
}
System.out.println();
}
}
上述代码实现了常见的链表操作,包括在链表末尾添加节点、在链表任意位置插入节点、在链表任意位置删除节点、获取链表长度和打印链表等功能。可以根据需要进行调用和测试。在实践中,可以根据实际需求对链表类进行扩展和优化。
