日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

单链表相交问题

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单链表相交问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題:

1.單鏈表如何判斷是否相交?

2.單鏈表相交點的地址如何求出?

解決:

先來說一下單鏈表相交的樣式圖是圖一樣子的還是圖二樣子的

?是圖二樣子的,因為圖一樣子那個相交點的next域會有兩個指向,所以只能是第二中樣子的

1.判斷兩個單鏈表相交

思路:

?思路有了,代碼實現如下:

bool Intersect(PNode plist1, PNode plist2)
{//assertNode *p = plist1;Node *q = plist2;for(p; p->next!=NULL; p=p->next); //此時p一定在plist1的尾結點for(q; q->next!=NULL; q=q->next); //此時q一定在plist2的尾結點return p==q ? true : false;/*if(p == q){return true;}return false;*/
}

上述三目運算那塊可以用下面的if替代,沒有任何區別!

2.單鏈表相交的首地址

思路:

?思路有了? 代碼實現:

Node* Intersect_get_first(PNode plist1, PNode plist2)
{//assertint len1 = Get_Length(plist1);  //自定義求單鏈表長度的函數int len2 = Get_Length(plist2);Node *p = len1>=len2 ? plist1 : plist2;   //三目運算求兩條鏈表中長短鏈表進行賦值Node *q = len1>=len2 ? plist2 : plist1;for(int i=0; i<abs(len1-len2); i++)  //abs是求絕對值的一個函數,這里就是為了保證為正數{p = p->next;  //長鏈走了先走比短鏈多出來的那部分}while(p != NULL){if(p == q){return p;//return q;}p=p->next;   //p,q同時開始走,直至相遇return 相遇點q=q->next; }return NULL;
}
//函數返回值要Node*的原因是這個返回的類型是一個Node類型的指針,所以拿Node*來接收

總結一下,兄弟們,鏈表相交在面試的時候會考(老師說的),還是值得多研究一下!希望這篇文章對大家有一定的幫助!

哪有什么歲月靜好,只不過有人再替我們負重前行,加油吧!

總結

以上是生活随笔為你收集整理的单链表相交问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。