伪装法 删
1在O(1)时间删除链表结点
下一个值给我,我的地址指到下一个的下一个
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void deleteNode(ListNode* node) {
node->val=node->next->val;
node->next=node->next->next;
}
};
2代表
cur
是一个指向链表节点的指针,而 cur->next
是 cur
所指向的节点的下一个节点。
3自己移动和自己指向自己
l1=l1->next;//l1自己再移动
l1->next=l1自己指向自己..
java递归写法
现在
想要
class Solution { public ListNode reverseList(ListNode head) { // 迭代 // ListNode prev=null; // ListNode cur=head; // while(cur!=null){ // ListNode next=cur.next;//为什么要有这个,因为cur.next=prev; cur.next已经变动了,我们要把cur.next复制一份给待会cur用来移动 // cur.next=prev; // // prev.next=cur; // prev=cur;//自己移动不是我的指针移动 // cur=next; // } // return prev; // 递归 if(head==null||head.next==null)return head; ListNode tail=reverseList(head.next); head.next.next=head; head.next=null; return tail; } }