代码随想录算法训练营第三天| 203. 移除链表,707.设计链表 ,206.反转链表
结束数组,来到了链表,链表刷过三遍了,做完就忘,希望这次能记住。。。
链表我一般都设置虚拟表头的,用的方便。来吧展示。
203.移除链表 leetcode203 Remove Linked List Elements
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode*dummyhead=new ListNode(0);//设置新的虚拟头结点
dummyhead->next=head;//将虚拟头结点接到头上
ListNode*cur=dummyhead; //cur就是现在要开始遍历的元素
while(cur->next!=NULL){
//判断这个链表不为空,开始循环
if(cur->next->val==val)//查找链表中是否等于val
{
ListNode*tmp=cur->next;//为了删除,所以增加临时tmp
cur->next=cur->next->next;//使这个直接变成下一个
delete tmp;//删除这个临时结点
}
else{
cur=cur->next;//没有的话就直接去下一个
}
}
head=dummyhead->next; //头现在是虚拟头结点,所以要把头搞回来
delete dummyhead;//C++还得自己删除虚拟结点,丑陋