判斷兩個鏈表是否相交,若相交,求交點,若帶環呢
這裏只貼判斷是否相交代碼(無環)
有環或不懂點這裏
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;
}