c语言单链表删除重复元素
时间: 2024-10-21 17:01:05 浏览: 21
在C语言中,删除单链表中的重复元素通常需要遍历整个链表,并维护两个指针,一个指向当前节点,另一个指向前一个节点。当发现当前节点的值等于前一个节点的值时,就将前一个节点的next指向当前节点的下一个兄弟节点,跳过重复部分。以下是简化的伪代码:
```c
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
ListNode* deleteDuplicates(ListNode* head) {
if (head == NULL || head->next == NULL) {
return head;
}
ListNode *prev = head;
ListNode *current = head->next;
while (current != NULL) {
if (current->val == prev->val) {
prev->next = current->next;
} else {
prev = current;
}
current = current->next;
}
return head;
}
```
在这个过程中,`prev`始终跟踪最后一个不重复的节点,`current`则依次检查每个节点。如果发现重复,就不再更新`prev`的next指针。
阅读全文