删除链表中的重复元素c语言
时间: 2023-09-30 09:03:26 浏览: 467
删除链表中重复元素(c语言版)
4星 · 用户满意度95%
以下是删除链表中重复元素的C语言代码:
```c
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* deleteDuplicates(struct ListNode* head) {
if (head == NULL) {
return head;
}
struct ListNode* cur = head;
while (cur->next != NULL) {
if (cur->val == cur->next->val) {
struct ListNode* tmp = cur->next;
cur->next = cur->next->next;
free(tmp);
} else {
cur = cur->next;
}
}
return head;
}
```
首先判断链表是否为空,如果为空直接返回,否则将链表头结点赋值给 cur。遍历链表,如果当前结点的值等于下一个结点的值,说明有重复元素,将下一个结点从链表中删除,并释放其内存空间;否则,继续遍历链表。最后返回链表的头结点即可。
阅读全文