判断两个链表是否相交,若相交,求交点,若带环呢/fork继承问题

判断两个链表是否相交,若相交,求交点,若带环呢

这里只贴判断是否相交代码(无环)
有环或不懂点这里

class Solution {
public:
    /**
     * @param headA: the first list
     * @param headB: the second list
     * @return: a ListNode
     */
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        // write your code here
        if(headA==NULL||headA->next==NULL)
            return NULL;
        if(headB==NULL||headB->next==NULL)
            return NULL;
        ListNode* cur1=headA;
        ListNode* cur2=headB;
        int len1=0,len2=0;
        while(cur1->next)
        {
            cur1=cur1->next;
            ++len1;
        }
        while(cur2->next)
        {
            cur2=cur2->next;
            ++len2;
        }
        if(cur2!=cur1)
            return NULL;

        int count=abs(len1-len2);
        cur1=headA;
        cur2=headB;
        if(len2>len1)
            while(count--)
                cur2=cur2->next;
        else
            while(count--)
                cur1=cur1->next;
        while(cur1!=cur2)
        {
            cur1=cur1->next;
            cur2=cur2->next;
        }
        return cur1;

    }
};

请问下面的程序一共输出多少个“-”

这里其实就是fork的特性,fork缓冲区继承问题,因为printf中没有带\n,所以系统将“-”写入了缓冲区,而fork后子进程将缓冲区内容也拷贝进自己的进程空间,所以子进程除了会打印自己printf里面的“-”,还会打印从父进程缓冲区继承而来的“-”

int main(void) 
{ 
int i; 
for(i=0; i<2; i++){ 
fork(); 
printf("-"); 
} 

return 0; 
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值