判斷兩個鏈表是否相交,若相交,求交點,若帶環呢/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; 
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章