现在有一个单链表。链表中每个节点保存一个整数,再给定一个值val,把所有等于val的节点删掉。
给定一个单链表的头结点head,同时给定一个值val,请返回清除后的链表的头结点,保证链表中有不等于该值的其它值。请保证其他元素的相对顺序。
测试样例:
{1,2,3,4,3,2,1},2
{1,3,4,3,1}
代码:
/* struct
ListNode { int
val; struct
ListNode *next; ListNode(int
x) : val(x), next(NULL) {} };*/ class ClearValue
{ public : ListNode*
clear(ListNode* head, int val)
{ //
write code here ListNode*
lol= new ListNode(- 1 );
//在head前加个叫lol的结点 lol也可称为伪头结点 lol->next=head; ListNode*
flag1=lol->next; //flag1从head开始 flag2从lol开始 ListNode*
flag2=lol;
//以下是删除特定结点的遍历过程 while (flag1!=NULL){ if (flag1->val==val){ flag1=flag1->next; flag2->next=flag1; } else { flag2=flag2->next; flag1=flag1->next; } } lol=lol->next;
//整个过程完了 我再将lol变为lol后置结点 return lol; } }; |