C++语言书写完整代码:请根据输入的逆序数据采用头插法创建一个单链表,然后删除相同的数据,仅保留一个。 【输入形式】逆序的数据,数据0代表输入结束 【输出形式】创建成功的原始单链表的数据,以及删除某些元素后的单链表的数据,其中相同数据仅保留一个 【样例输入】 9 9 8 8 7 6 5 5 4 0 【样例输出】 4 5 5 6 7 8 8 9 9 4 5 6 7 8 9
时间: 2024-03-02 17:54:38 浏览: 63
C++实现动态链表的建立、输出、插入和删除功能。
5星 · 资源好评率100%
下面是完整的 C++ 代码实现:
```cpp
#include <iostream>
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
ListNode* createList() {
int x;
ListNode* head = nullptr;
while (std::cin >> x && x != 0) {
ListNode* node = new ListNode(x);
node->next = head;
head = node;
}
return head;
}
void removeDuplicates(ListNode* head) {
ListNode* p = head;
while (p != nullptr && p->next != nullptr) {
ListNode* q = p->next;
if (p->val == q->val) {
p->next = q->next;
delete q;
} else {
p = q;
}
}
}
void printList(ListNode* head) {
ListNode* p = head;
while (p != nullptr) {
std::cout << p->val << " ";
p = p->next;
}
std::cout << std::endl;
}
int main() {
ListNode* head = createList();
printList(head);
removeDuplicates(head);
printList(head);
return 0;
}
```
输入样例:
```
9 9 8 8 7 6 5 5 4 0
```
输出样例:
```
4 5 5 6 7 8 8 9 9
4 5 6 7 8 9
```
阅读全文