数据结构实验:删除队列中的重复元素的C语言算法
时间: 2024-03-26 21:41:52 浏览: 66
以下是删除队列中重复元素的C语言算法:
```c
typedef struct node {
int data;
struct node *next;
} Node, *Queue;
void deleteDuplicate(Queue *q) {
if (*q == NULL || (*q)->next == NULL) {
return;
}
Node *p = (*q)->next;
Node *pre = *q;
while (p != NULL) {
Node *q = (*q)->next;
while (q != p) {
if (q->data == p->data) {
pre->next = p->next;
free(p);
p = pre->next;
break;
} else {
q = q->next;
}
}
if (q == p) {
pre = p;
p = p->next;
}
}
}
```
这个算法的思路是使用两个指针p和q,其中p指向当前需要判断的节点,q指向p之前的节点。在遍历队列的过程中,对于每个节点p,我们都从队列头开始遍历到p之前的节点,查找是否存在和p节点相同的元素。如果找到了相同的元素,就删除p节点,否则继续遍历下一个节点。这个算法的时间复杂度为O(n^2),其中n为队列中元素的个数。
阅读全文