Java完成单链表类的定义,并实现其基本操作
时间: 2024-11-15 10:30:18 浏览: 3
在Java中,我们可以创建一个名为`SingleLinkedList`的单链表类,包含节点类`ListNode`作为内部结构。以下是这个类的基本定义和一些常用的操作:
```java
// 节点类 ListNode
class ListNode {
int data; // 数据域
ListNode next; // 指向下一个节点的引用
ListNode(int data) {
this.data = data;
this.next = null;
}
}
// 单链表类 SingleLinkedList
public class SingleLinkedList {
private ListNode head; // 链表头节点
// 构造函数
public SingleLinkedList() {
head = null;
}
// 插入节点到链表头部
public void insertAtStart(int data) {
ListNode newNode = new ListNode(data);
newNode.next = head;
head = newNode;
}
// 在指定位置插入节点
public void insertAtPosition(int position, int data) {
if (position <= 0) return;
ListNode current = head;
for (int i = 0; i < position - 1 && current != null; i++) {
current = current.next;
}
if (current == null) return;
ListNode newNode = new ListNode(data);
newNode.next = current.next;
current.next = newNode;
}
// 删除特定值的节点
public void deleteNode(int value) {
if (head == null || head.data == value) {
head = head.next;
return;
}
ListNode current = head;
while (current.next != null && current.next.data != value) {
current = current.next;
}
if (current.next != null) {
current.next = current.next.next;
}
}
// 查找并返回某个元素的位置(如果存在)
public int findPosition(int value) {
ListNode current = head;
int index = 0;
while (current != null) {
if (current.data == value) return index;
current = current.next;
index++;
}
return -1; // 如果未找到则返回 -1
}
// 打印链表内容
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
ListNode node = head;
while (node != null) {
sb.append(node.data + " -> ");
node = node.next;
}
sb.append("null");
return sb.toString();
}
}
```
阅读全文