给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 cyu语言实现
时间: 2024-09-18 21:13:44 浏览: 34
c代码-给定排序链表,删除所有重复的元素,使得每个元素只出现一次。
给定一个已排序的链表,删除其中的所有重复元素,可以使用双指针法,即维护两个节点,一个指向当前节点,另一个指向当前节点的下一个节点。如果当前节点的值等于下一个节点的值,则不断移动下一个节点,直到找到不同的值,然后将当前节点的next指向这个新位置。遍历完成后,最后一个非重复节点就是新的链表头。
以下是Cyu语言(可能需要翻译成C++或Python等常见编程语言才能运行)的一个简化版本的实现:
```cyu
// 定义链表节点结构
typedef struct ListNode {
int val;
ListNode* next;
} ListNode;
ListNode* deleteDuplicates(ListNode* head) {
if (head == nullptr || head->next == nullptr) { // 如果链表为空或只有一个元素
return head;
}
ListNode* current = head; // 初始化当前节点为头节点
while (current != nullptr && current->next != nullptr) {
if (current->val == current->next->val) { // 如果当前节点的值等于下一个节点的值
ListNode* temp = current->next;
while (temp != nullptr && temp->val == current->val) { // 移动到下一个不同的节点
temp = temp->next;
}
current->next = temp; // 更新当前节点的next为非重复节点
} else {
current = current->next; // 否则直接移动到下一个节点
}
}
return head;
}
阅读全文