题解 | 从单向链表中删除指定值的节点
从单向链表中删除指定值的节点
https://www.nowcoder.com/practice/f96cd47e812842269058d483a11ced4f
#include <cstddef>
#include <iostream>
using namespace std;
struct Node{
int val;
Node *next;
};
int main() {
int n,h,k;cin>>n>>h;
Node *head = new Node;
Node *p= new Node;
head->val = h;
head->next = nullptr;
int pre,idx;
n--;
while(n--){
cin>>idx>>pre;
Node *q = new Node();
q->val = idx;
for(p = head;p!=nullptr;p = p->next){
if(p->val==pre){
q->next = p->next;
p->next = q;
}
}
}
cin>>k;
if(head->val==k){
head = head->next;
}
for(p = head;p!=nullptr;p = p->next){
if(p->next->val==k){
p->next = p->next->next;
break;
}
}
for(p=head;p!=nullptr;p=p->next){
cout<<p->val<<' ';
}
return 0;
}
// 64 位输出请用 printf("%lld")
思路不难,但是可能会遇到空指针错误,在20行,原来是直接new Node,后来改为new Node();之后就可以了,也不知道是为什么,求大佬解答。
活动地址https://www.nowcoder.com/discuss/726480854079250432
#牛客春招刷题训练营#
查看19道真题和解析