题目如下:

代码如下:
typedef struct ListNode ListNode;
struct ListNode* removeElements(struct ListNode* head, int val) {
ListNode* newhead, * newtail;
newhead = newtail = (ListNode*)malloc(sizeof(ListNode));
while (head)
{
if (head->val != val)
{
newtail->next = head;
head = head->next;
newtail = newtail->next;
}
else {
head = head->next;
}
}
newtail->next = NULL;
return newhead->next;
}typedef struct ListNode ListNode;
struct ListNode* removeElements(struct ListNode* head, int val) {
if (head == NULL)
{
return NULL;
}
// 创建空链表
ListNode* newhead, * newtail;
newhead = newtail = NULL;
while (head) {
if (head->val != val) {
// 空链表
if (newhead == NULL) {
newtail = newhead = head;
}
else {
// 非空链表
newtail->next = head;
newtail = newtail->next;
}
}
head = head->next;
}
if (newtail)
newtail->next = NULL;
return newhead;
}