LeetCode203移除链表元素
代码:
/**
* 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 *vir_head; // 虚拟头结点
vir_head->next = head;
ListNode *cur = head; // 当前指针初始化指向头结点
ListNode *pre = vir_head;// pre指针初始化指向虚拟头结点
if (cur->val == val) {
pre->next = cur->next;
}
cur = pre->next;
}
};
思路:知道怎么删除链表元素,但是在怎么将cur指向的元素和pre指向的元素一个个移动犯了难。
LeetCode707设计链表
思路:有点复杂,今天想不太明白了
LeetCode206反转链表
思路:想着正向遍历元素,用pre指针和cur指针指向先前和之后的元素,然后将它们指向倒转,接着 一个个向后遍历,将后一个元素作为新的头结点。(代码今天没空写了QAQ)