题目:
思路:建立一个新的空链表,遍历原链表,将不是要删除的结点,尾插到新链表中
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode result=null;//新链表
ListNode last=null;//result的最后一个结点
ListNode cur=head;//从原链表的第一个结点遍历
while(cur!=null){
if(cur.val==val){//若与要删除的结点相同,则跳过,继续判断下一个结点
cur=cur.next;
continue;
}
ListNode next=cur.next;
if(result==null){//若新链表为空。则更新cur为新链表的第一个结点
result=cur;
}else{//不为空则进行尾插
last.next=cur;
}
cur.next=null;
last=cur;
cur=next;
}
return result;//返回新链表
}
}
执行结果: