c语言:写一算法将单链表中值重复的结点删除
时间: 2024-02-25 22:56:53 浏览: 108
算法如下:
1. 定义两个指针:p和q,p指向当前结点,q指向p的下一个结点。
2. 当p不为空时,执行以下循环:
a. 如果p的值与q的值相等,则删除q结点。
b. 否则,将p指向q,q指向q的下一个结点。
c. 如果q为空,则将p的下一个结点设为NULL,结束循环。
3. 返回被删除结点的个数。
C语言代码实现如下:
```
int removeDuplicateNodes(Node* head){
int count = 0;
Node *p = head, *q;
while(p != NULL){
q = p->next;
while(q != NULL){
if(p->data == q->data){
p->next = q->next;
free(q);
q = p->next;
count++;
}
else{
p = q;
q = q->next;
}
}
p->next = NULL;
p = p->next;
}
return count;
}
```
其中,Node为链表结点的结构体,包含数据域data和指向下一个结点的指针next。
阅读全文
相关推荐
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)