1 题目:
删除链表的节点_牛客题霸_牛客网 (nowcoder.com)
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。
1.此题对比原题有改动
2.题目保证链表中节点的值互不相同
3.该题只会输出返回的链表和结果做对比,所以若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点
数据范围:
0<=链表节点值<=10000
0<=链表长度<=10000
2 参考:
3 代码:
参考;删除链表的节点_牛客题霸_牛客网 (nowcoder.com)
C++
class Solution {
public:
ListNode* deleteNode(ListNode* head, int val) {
//加入一个头节点
ListNode* res = new ListNode(0);
res->next = head;
//前序节点
ListNode* pre = res;
//当前节点
ListNode* cur = head;
//遍历链表
while(cur != NULL){
//找到目标节点
if(cur->val == val){
//断开连接
pre->next = cur->next;
break;
}
pre = cur;
cur = cur->next;
}
//返回去掉头节点
return res->next;
}
};
Python3:
import re
from pickle import NONE
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类
# @param val int整型
# @return ListNode类
#
class Solution:
def deleteNode(self , head, val):
# write code here
if not head:return
if head.val==val:return head.next
pre,cur=head,head.next
while cur and cur.val!=val:
pre,cur=cur,cur.next
if cur:pre.next=cur.next
return head