编程要求 根据提示,在右侧编辑器补充代码,删除不带附加头节点的单链表head中值为val的结点。题目保证单链表中结点的值互不相同。
测试说明 平台会对你编写的代码进行测试:
输入包括两行,第一行为单链表中结点的值;第二行为需要删除的值val。
测试输入1: 2 5 1 9 5 预期输出1: 2 1 9
测试输入2: 2 5 1 9 1 预期输出1: 2 5 9
测试输入3: 2 5 1 9 3 预期输出3: 2 5 1 9
提示:
数据范围:
0<=链表节点值<=1000 0<=链表长度<=1000
#include "linkedlist.h" /* 单链表类型声明及其基本操作 */
/* 裁判实现:创建值为val的单链表结点,并返回指向该结点的指针 */
ListNode* getNewNode(int val) {
ListNode* p = (ListNode*)malloc(sizeof(ListNode));
p->val = val;
p->next = NULL;
return p;
}
/**
* head:不带附加头结点的单链表的头指针
* val:需要删除的值
* 返回值:返回删除val后的单链表的头指针
*/
ListNode* deleteNode(ListNode* head, int val) {
//请在下面编写代码
/********************Begin********************/
if(!head) return nullptr;
if(head->val == val) return deleteNode(head->next, val);
else{
head->next = deleteNode(head->next, val);
return head;
}
/*********************End*********************/
}