提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
文章目錄
前言
1、相交鏈表的題目:
方法講解:
圖文解析:
代碼實現:
總結
前言
世上有兩種耀眼的光芒,一種是正在升起的太陽,一種是正在努力學習編程的你!一個愛學編程的人。各位看官,我衷心的希望這篇博客能對你們有所幫助,同時也希望各位看官能對我的文章給與點評,希望我們能夠攜手共同促進進步,在編程的道路上越走越遠!
提示:以下是本篇文章正文內容,下面案例可供參考
1、相交鏈表的題目:
方法講解:
圖文解析:
解題思路:
分別找到A、B兩個鏈表的尾節點,尾節點地址相同,就說明兩個鏈表相交;若尾節點地址不同,就說明兩個鏈表不相交。分別求出A、B兩個鏈表的長度,長的先走差距步,然后再同時走,當節點的地址相同時,就說明這個節點就是相交的起始節點。
代碼實現:
typedef struct ListNode ListNode;
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {struct ListNode*cur1 = headA;struct ListNode*cur2 = headB;int len1 = 1;int len2 = 1;//求鏈表A、B的長度//鏈表A、B的最后一個節點的不滿足循環條件,就沒進去while(cur1->next){len1++;cur1 = cur1->next;}while(cur2->next){len2++;cur2 = cur2->next;}//判斷鏈表A、B是否相交if(cur1 != cur2){return NULL;}//求鏈表A、B長度差的絕對值int n = abs(len1 - len2);//假設鏈表A比鏈表B的長度長struct ListNode*longList = headA;struct ListNode*shortList = headB;if(len2>len1){longList = headB;shortList = headA;}//長的先走差距步while(n--){longList = longList->next;}//同時走while(longList != shortList){longList = longList->next;shortList = shortList->next;}return longList;
}
總結
好了,本篇博客到這里就結束了,如果有更好的觀點,請及時留言,我會認真觀看并學習。
不積硅步,無以至千里;不積小流,無以成江海。