使用Java函数实现数据结构中的链表操作的示例代码。
发布时间:2023-11-13 15:11:55
下面是Java函数实现链表操作的示例代码:
// 定义链表节点结构
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
this.next = null;
}
}
// 链表操作类
class LinkedList {
private ListNode head;
// 构造函数,初始化链表头节点
public LinkedList() {
this.head = null;
}
// 判断链表是否为空
public boolean isEmpty() {
return head == null;
}
// 在链表末尾插入节点
public void insert(int val) {
ListNode newNode = new ListNode(val);
if (isEmpty()) {
head = newNode;
} else {
ListNode curr = head;
while (curr.next != null) {
curr = curr.next;
}
curr.next = newNode;
}
}
// 在链表指定位置插入节点
public void insertAt(int val, int position) {
ListNode newNode = new ListNode(val);
if (isEmpty() || position == 0) {
newNode.next = head;
head = newNode;
} else {
ListNode curr = head;
int count = 0;
while (count < position - 1 && curr.next != null) {
curr = curr.next;
count++;
}
newNode.next = curr.next;
curr.next = newNode;
}
}
// 删除链表末尾节点
public void delete() {
if (!isEmpty()) {
ListNode curr = head;
ListNode prev = null;
while (curr.next != null) {
prev = curr;
curr = curr.next;
}
if (prev != null) {
prev.next = null;
} else {
head = null;
}
}
}
// 删除链表指定位置节点
public void deleteAt(int position) {
if (!isEmpty() && position >= 0) {
ListNode curr = head;
ListNode prev = null;
int count = 0;
while (count < position && curr.next != null) {
prev = curr;
curr = curr.next;
count++;
}
if (count == position) {
if (prev != null) {
prev.next = curr.next;
} else {
head = curr.next;
}
}
}
}
// 输出链表内容
public void display() {
if (isEmpty()) {
System.out.println("空链表");
} else {
ListNode curr = head;
while (curr != null) {
System.out.print(curr.val + " ");
curr = curr.next;
}
System.out.println();
}
}
}
public class Main {
public static void main(String[] args) {
LinkedList list = new LinkedList();
// 插入节点
list.insert(1);
list.insert(2);
list.insert(3);
// 输出链表内容
list.display(); // 输出:1 2 3
// 在指定位置插入节点
list.insertAt(4, 1);
// 输出链表内容
list.display(); // 输出:1 4 2 3
// 删除节点
list.delete();
// 输出链表内容
list.display(); // 输出:1 4 2
// 删除指定位置节点
list.deleteAt(1);
// 输出链表内容
list.display(); // 输出:1 2
}
}
以上代码演示了链表的常见操作,包括插入、删除和输出链表内容。在主函数中创建链表对象后,通过调用链表对象的各个方法来实现相应的操作。运行代码后,输出结果为链表的节点内容。
