判断两个链表是否相交,若相交,求交点,若带环呢
这里只贴判断是否相交代码(无环)
有环或不懂点这里
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;
}