您的位置:首页 > 其它

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

2017-07-16 22:59 423 查看

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

这里只贴判断是否相交代码(无环)

有环或不懂点这里

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐