Java创建带头结点的有序单链表,配备创建链表、增加、删除、查询、打印等操作。要求,必须用构造函数为链表结点赋值、用toString()实现支持直接打印对象。
时间: 2024-09-24 12:05:41 浏览: 46
在Java中,我们可以创建一个名为`ListNode`的链表节点类,以及一个`OrderedLinkedList`类来管理有序单链表。这里是一个简单的实现示例:
```java
public class ListNode {
int data;
ListNode next;
public ListNode(int data) {
this.data = data;
this.next = null;
}
@Override
public String toString() {
return "ListNode{" +
"data=" + data +
", next=" + (next == null ? "null" : next.toString()) +
'}';
}
}
public class OrderedLinkedList {
private ListNode head;
public OrderedLinkedList() {
head = null;
}
// 添加元素到链表的适当位置以保持排序
public void add(int value) {
if (head == null || value < head.data) {
head = new ListNode(value);
} else {
ListNode current = head;
while (current.next != null && current.next.data > value) {
current = current.next;
}
ListNode newNode = new ListNode(value);
newNode.next = current.next;
current.next = newNode;
}
}
// 删除节点,按值删除第一个匹配项
public void delete(int value) {
if (head != null) {
if (head.data == value) {
head = head.next;
} else {
ListNode current = head;
while (current.next != null && current.next.data != value) {
current = current.next;
}
if (current.next != null) {
current.next = current.next.next;
}
}
}
}
// 查找节点是否存在
public boolean contains(int value) {
ListNode current = head;
while (current != null) {
if (current.data == value) {
return true;
}
current = current.next;
}
return false;
}
// 打印链表
public void printList() {
if (head != null) {
System.out.println(head.toString());
} else {
System.out.println("链表为空");
}
}
}
```
在这个例子中,`ListNode`类用于表示链表的节点,它有数据`data`和指向下一个节点的引用`next`。`OrderedLinkedList`类包含了创建链表、添加元素(保持顺序)、删除元素、查询元素是否存在以及打印链表的功能。
阅读全文