关于代码逐过程的思考

发布时间 2024-01-12 16:12:21作者: 云撤~

始终要明确一个过程中只能完成一次操作,这样才能有序进行。当然错误情况主要集中与边界条件的处理。

这道题,最开始

点击查看代码
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode*p=headA;ListNode*q=headB;
        while(p!=q){
p=p->next;
if(p==NULL){p=headB;}
q=q->next;
if(q==NULL){q=headA;}
        }
        return p;
    }
};
但发现进入死循环。因为当p,q为空指针是,又进行一步操作,从而出错。 应该这样处理
点击查看代码
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        
        ListNode*p=headA;ListNode*q=headB;
       while (p != q) {
            p = p ? p->next : headB; 
            q = q ? q->next : headA; 
        }
        return p;
    }
};