用c语言表示一个链表可以删除链表中重复元素
时间: 2024-11-18 21:13:09 浏览: 11
c语言链表的基本操作之删除排序链表中的重复元素.zip
在C语言中,你可以使用结构体定义链表节点,并提供一个函数来删除链表中的重复元素。首先,我们定义链表节点结构:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
接下来,创建一个函数`deleteDuplicates`,它接受链表头指针作为参数,并遍历链表,如果发现相同的元素,就将重复部分连接到当前元素之后:
```c
void deleteDuplicates(Node** head) {
if (*head == NULL || (*head)->next == NULL) {
return; // 如果链表为空或只有一个元素,无需处理
}
Node* current = *head;
Node* runner = current->next;
while (runner != NULL) {
if (current->data == runner->data) {
// 找到重复元素,跳过并继续检查下一个
runner = runner->next;
} else {
current->next = runner;
current = runner;
runner = runner->next;
}
}
current->next = NULL; // 结束循环后,将最后一个节点的next设为NULL
}
```
这个函数假设数据类型的比较是基于值相等。如果你需要基于其他条件判断,例如字符串或自定义对象,你需要相应地修改比较部分。
阅读全文