leetcode 删除链表元素https://leetcode.cn/problems/remove-linked-list-elements/
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode* p=head;
if(head==nullptr)
{
return head;
}
while(p->next)
{
if(p->next->val==val)
{
p->next=p->next->next;
continue;
}
p=p->next;
}
if(head->val==val)
{
head=head->next;
}
return head;
}
};
解析:
1.先创建链表指针index
2.头为空直接返回
3.中间的元素,选择跳过删除,头元素选择后移头指针
leetcode 反转列表https://leetcode.cn/problems/reverse-linked-list/
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode newHead = reverseList(head.next);
head.next.next = head;
head.next = null;
return newHead;
}
}
看成两个节点的链表,让后递归