java完成自定义链表结构 1.添加数据 2.删除数据 3.修改数据 4.获得数据个数 5.通过索引获得数据 6.查询链表数据是否存在
时间: 2024-03-10 15:47:22 浏览: 44
数据结构单链表的创建,插入,修改,查找以及删除
5星 · 资源好评率100%
好的,以下是 Java 语言实现自定义链表结构的示例代码,实现了你需要的所有操作:
```java
// 链表节点类
class ListNode {
int val;
ListNode next;
public ListNode(int val) {
this.val = val;
this.next = null;
}
}
// 链表类
class LinkedList {
ListNode head;
int count;
public LinkedList() {
this.head = null;
this.count = 0;
}
// 添加数据
public void add(int val) {
ListNode new_node = new ListNode(val);
if (head == null) {
head = new_node;
} else {
ListNode cur_node = head;
while (cur_node.next != null) {
cur_node = cur_node.next;
}
cur_node.next = new_node;
}
count++;
}
// 删除数据
public void remove(int val) {
if (head == null) {
return;
}
if (head.val == val) {
head = head.next;
count--;
return;
}
ListNode prev_node = head;
ListNode cur_node = head.next;
while (cur_node != null) {
if (cur_node.val == val) {
prev_node.next = cur_node.next;
count--;
return;
}
prev_node = cur_node;
cur_node = cur_node.next;
}
}
// 修改数据
public boolean modify(int old_val, int new_val) {
ListNode cur_node = head;
while (cur_node != null) {
if (cur_node.val == old_val) {
cur_node.val = new_val;
return true;
}
cur_node = cur_node.next;
}
return false;
}
// 获得数据个数
public int get_count() {
return count;
}
// 通过索引获得数据
public int get_val(int index) {
if (index < 0 || index >= count) {
return -1;
}
ListNode cur_node = head;
for (int i = 0; i < index; i++) {
cur_node = cur_node.next;
}
return cur_node.val;
}
// 查询链表数据是否存在
public boolean search(int val) {
ListNode cur_node = head;
while (cur_node != null) {
if (cur_node.val == val) {
return true;
}
cur_node = cur_node.next;
}
return false;
}
}
```
以上代码中,链表节点类 `ListNode` 包含了值和指向下一个节点的指针,链表类 `LinkedList` 包含头节点和链表中节点的个数,以及实现了你所需要的所有操作。你可以根据需要进行修改和扩展。
阅读全文