LeetCode-【链表】解题技巧

删除链表的节点

    ListNode* deleteNode(ListNode* head, int val) {
        ListNode* dummy = new ListNode(0); //构建虚拟头节点
        dummy->next = head;
        ListNode *t=dummy;
        while(t&&t->next){
            if(t->next->val==val){
                t->next=t->next->next;
            }
            else{
                t=t->next;
            }
        }
        return dummy->next;
    }

合并两个排序的链表

    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        if(l1==NULL&&l2==NULL){
            return NULL;
        }
        ListNode *res = new ListNode(0);
        ListNode *head=res;
        while(l1&&l2){
            if(l1->valval){
                head->next=l1;
                l1=l1->next;
            }
            else{
                head->next=l2;
                l2=l2->next;
            }
            head=head->next;//向后移一位
        }
        if(l1){
            head->next=l1;
        }
        if(l2){
            head->next=l2;
        }
        return res->next;
    }

 

你可能感兴趣的:(LeetCode)