完成次数 2
一、题目
二、代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
///统一链表格式
ListNode* dummyhead = new ListNode(0); //设置虚假的头结点 为了使得单节点和多节点情况统一
dummyhead->next = head;
//定义操作节点
ListNode* process_node = new ListNode(0);
process_node=dummyhead;
//定义临时节点
ListNode* temp_node = new ListNode(0);
while(process_node->next!=nullptr)
{
if(process_node->next->val==val) //如果处理节点的下一个节点值等于val 那么直接改变指针
{
temp_node=process_node->next;
process_node->next=temp_node->next;
}
else
{
process_node=process_node->next;
}
}
std::cout<<"all is finish "<<std::endl;
delete temp_node;
// delete process_node; //和dummyhead指向同一片空间 所以删不掉
return dummyhead->next;
}
};