c语言 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->3->4->5
时间: 2024-05-04 17:15:33 浏览: 19
这是一个技术问题,我可以回答。这个问题可以通过遍历链表并使用一个哈希表来记录访问过的值来解决。具体实现可参考以下代码:
```
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* deleteDuplicates(struct ListNode* head){
if (head == NULL) {
return head;
}
struct ListNode dummy;
dummy.next = head;
struct ListNode* pre = &dummy;
struct ListNode* cur = head;
while (cur != NULL) {
struct ListNode* next = cur->next;
int dupFlag = 0;
while (next != NULL && next->val == cur->val) {
dupFlag = 1;
cur->next = next->next;
free(next);
next = cur->next;
}
if (dupFlag) {
pre->next = cur->next;
free(cur);
cur = pre->next;
} else {
pre = cur;
cur = next;
}
}
return dummy.next;
}
int main() {
// 构造测试链表
struct ListNode node6 = {5, NULL};
struct ListNode node5 = {4, &node6};
struct ListNode node4 = {4, &node5};
struct ListNode node3 = {3, &node4};
struct ListNode node2 = {3, &node3};
struct ListNode node1 = {1, &node2};
// 调用删除重复结点函数
struct ListNode* result = deleteDuplicates(&node1);
// 打印结果
while (result != NULL) {
printf("%d ", result->val);
result = result->next;
}
printf("\n");
return 0;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)