删除带头结点单链表中值相同的元素代码
时间: 2024-12-19 21:27:14 浏览: 8
图像滤波代码_pair8hr_countllb_图像滤波代码_中值滤波matlab代码_
有两种情况可以删除带头结点单链表中值相同的元素:
1. 对于递增有序单链表[^1]:
```cpp
void Delete(OrderedLinkList &L){
LinkList p = L->next;
LinkList q;
while (q) {
q = p->next;
if (p->data != q->data) {
p = p->next;
q = q->next;
} else {
p->next = q->next;
free(q);
}
}
}
```
在这个函数中,遍历链表并逐个比较节点值,如果发现不同的值就跳过,遇到相同的值则删除该节点。
2. 对于无序带头结点的单链表:
```cpp
void Delete(LinkedList &L){
LinkList p = L->next;
LinkList q, pre, t;
while (p) {
pre = p;
q = p->next;
while (q) {
if (p->data != q->data) {
q = q->next;
pre = pre->next;
} else {
t = q;
q = q->next;
pre->next = q;
free(t);
}
}
p = p->next;
}
}
```
这里也采用类似的方法,但多了一个预置指针`pre`来记录当前节点的前驱,以便在找到相同值时能够更新链接。
阅读全文