題目:兩個單鏈表,找出它們的第乙個公共結點。
鍊錶的結點定義為:
struct答:listnode
;
#include "執行介面如下:stdafx.h
"#include
#include
using
namespace
std;
struct
listnode;//
構造鍊錶
void createlist(listnode *&phead, fstream &fin, listnode *pnodecommon)
else
fin>>data;
}if (null !=pnode)
}//求鍊錶長度
int listlength(listnode *phead)
listnode *pnode =phead;
int length = 0
;
while (null!=pnode)
return
length;}//
找出鍊錶的第乙個公共結點
listnode* findfirstcommonnode(listnode *pfirsthead, listnode *psecondhead)
int separate = lengthlong -lengthshort;
for (int i = 0; i < separate && null != plongnode; i++) //
2、讓長度長的鍊錶先遍歷兩個鍊錶的長度的差值
while (null != pshortnode && null != plongnode && (pshortnode != plongnode)) //
3、第乙個相等的鍊錶結點就是第乙個公共結點
if (pshortnode ==plongnode)
return
null;
}int _tmain(int argc, _tchar*argv)
else
cout
<
return0;
}
建造長鍊表用到的listlong.txt為:
55589建造短鍊表用到的listshort.txt為:2044
332084
0
7建造公共鍊錶用到的listcommon.txt為:1639
0
5554507799
0
鍊錶的第乙個公共結點
輸入兩個鍊錶,找出它們的第乙個公共結點。注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的 先遍歷兩個鍊錶得到兩個鍊錶的長度,設為k,較長的的鍊錶先走k步。struct listnode class solution while p2 int len len1 l...
找出鍊錶的第乙個公共節點
62.找出鍊錶的第乙個公共結點。題目 兩個單向鍊錶,找出它們的第乙個公共結點 思路 1.暴力法 但時間複雜度太高 o n m 2.如果兩個鍊錶有公共節點,則從該公共節點起,後面的節點均為公共的,即這兩個鍊錶在第乙個公共節點交叉,然後形成乙個y字型,因為兩個鍊錶長度不一定一樣,所以可以先求得他們的長度...
微軟100題(62)找出鍊錶的第乙個公共結點
題目 兩個單向鍊錶,找出它們的第乙個公共結點。鍊錶的結點定義為 struct listnode 思路 如果有公共結點,那麼從公共結點之後都是一樣的,假設乙個長m,乙個長n,那麼這兩個之間的差值之前的結點不可能是公共的,所以長的乙個先走差值,然後兩個一起走 判斷 int getlistlength l...