pUcLinklist(LinkList)函数是删除带头结点单链表的重复结点。
时间: 2024-04-30 07:17:41 浏览: 96
下面是pUcLinklist(LinkList)函数的实现:
```C
void pUcLinklist(LinkList L)
{
if (L == NULL || L->next == NULL) {
return;
}
// p指向当前要比较的结点,q指向p的前驱结点
ListNode *p = L->next, *q = L;
while (p != NULL) {
// 在p后面查找与p结点值相同的结点
ListNode *r = p->next, *s = p;
while (r != NULL) {
if (r->data == p->data) {
// 删除r结点
s->next = r->next;
free(r);
r = s->next;
} else {
r = r->next;
s = s->next;
}
}
// p结点不重复,继续比较下一个结点
p = p->next;
q = q->next;
}
}
```
该函数的时间复杂度为$O(n^2)$,因为它需要两重循环来比较每个结点。如果链表较长,效率会比较低。
阅读全文