在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,请设计算法去掉数值相同的元素,使表中不再有重复的元素java
时间: 2024-10-25 18:15:31 浏览: 13
在单链表中去除重复元素的一种常见算法是通过迭代遍历链表。这里有一个简单的 Java 实现思路:
```java
public class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public class RemoveDuplicatesFromSortedList {
public ListNode removeDuplicates(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode current = head;
while (current.next != null) {
if (current.val == current.next.val) {
// 如果当前节点值等于下一个节点值,就移动指针到下一个非重复节点
current.next = current.next.next;
} else {
current = current.next; // 否则继续遍历
}
}
return head;
}
}
```
这个算法的基本步骤是:
1. 遍历链表,从头开始。
2. 如果遇到两个连续的节点值相等,将第二个节点跳过,即 `current.next = current.next.next`。
3. 如果节点值不同,则继续前进到下一个节点,直到链表结束。
阅读全文