牛客华为机试--HJ48 从单向链表中删除指定值的节点C++
题目描述
示例1
示例2
该题的核心是每来一组数据,都要从头开始找,找到数据后再插入。而不是直接在尾部插入数据。
上代码
#include <iostream>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(nullptr) {}
};
int main() {
int n, h;
cin >> n >> h;
ListNode *head = new ListNode(h);
for (int i = 1; i < n; i++) {
int val, after;
cin >> val >> after;
ListNode *Temp = head;
while (Temp != nullptr) {
if (Temp->val == after) {
ListNode *NextNode = Temp->next;
Temp->next = new ListNode(val);
Temp->next->next = NextNode;
}
Temp = Temp->next;
}
}
int k;
cin >> k;
while (head != nullptr) {
if (head->val != k) {
cout << head->val << " ";
}
head = head->next;
}
//正常需要补充释放内存代码
}