用c++编写一个能删除链表中所有值相同的多余元素的小程序。已知单向链表中的元素以值递增有序排列,试编写一个程序,删除链表中所有值相同的多余元素,使得运算后的链表中所有元素的值均不相同。 输入格式: 输入递增的一串整数,分别存到链表的每个节点。以0结束输入。 输出格式: 输出删除重复节点后的链表节点值。 效果如下: 输入: 1 2 2 3 3 3 4 5 6 6 7 0 输出: 1 2 3 4 5 6 7
时间: 2024-04-17 07:26:00 浏览: 215
下面是使用C++编写的删除链表中重复元素的程序:
```cpp
#include <iostream>
// 定义链表节点结构
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 删除链表中重复元素
ListNode* deleteDuplicates(ListNode* head) {
if (head == nullptr || head->next == nullptr) {
return head;
}
ListNode* curr = head;
while (curr->next != nullptr) {
if (curr->val == curr->next->val) {
ListNode* temp = curr->next;
curr->next = curr->next->next;
delete temp;
} else {
curr = curr->next;
}
}
return head;
}
int main() {
int val;
std::cout << "请输入递增的一串整数(以0结束输入):";
ListNode* dummy = new ListNode(-1); // 虚拟头节点
ListNode* curr = dummy;
while (std::cin >> val && val != 0) {
curr->next = new ListNode(val);
curr = curr->next;
}
// 删除重复元素
dummy->next = deleteDuplicates(dummy->next);
// 输出删除重复元素后的链表节点值
std::cout << "删除重复元素后的链表节点值:" << std::endl;
curr = dummy->next;
while (curr != nullptr) {
std::cout << curr->val << " ";
curr = curr->next;
}
std::cout << std::endl;
// 释放链表内存
curr = dummy;
while (curr != nullptr) {
ListNode* temp = curr;
curr = curr->next;
delete temp;
}
return 0;
}
```
在这个程序中,我们首先创建了一个带有虚拟头节点(dummy)的链表,并根据用户输入的递增整数构建了链表。然后,我们调用`deleteDuplicates`函数来删除链表中的重复元素,该函数使用了简单的迭代方法进行遍历和删除。最后,我们遍历并打印删除重复元素后的链表节点值。
希望这个程序对你有所帮助!如果你有任何其他问题,请随时提问。
阅读全文
相关推荐
![c](https://img-home.csdnimg.cn/images/20250102104920.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)