http://www.geeksforgeeks.org/write-a-function-to-get-the-intersection-point-of-two-linked-lists/
第一第二個方法比較簡單,下面這段代碼是第三個方法
1
#include <iostream>
2
#include <vector>
3
#include <algorithm>
4
#include <queue>
5
#include <stack>
6
#include <
string
>
7
#include <fstream>
8
#include <map>
9
#include <
set
>
10
using
namespace
std;
11
12
struct
node {
13
int
data;
14
node *
next;
15
node() : data(
0
), next(NULL) { }
16
node(
int
d) : data(d), next(NULL) { }
17
};
18
19
void
push(node* &head,
int
k) {
20
node *new_node =
new
node(k);
21
new_node->next =
head;
22
head =
new_node;
23
}
24
25
void
print(node*
head) {
26
while
(head) {
27
cout << head->data <<
"
"
;
28
head = head->
next;
29
}
30
cout <<
endl;
31
}
32
33
int
getintersect(node *first, node *
second) {
34
int
c1 =
0
;
35
int
c2 =
0
;
36
node *p =
first;
37
while
(p) {
38
c1++
;
39
p = p->
next;
40
}
41
p =
second;
42
while
(p) {
43
c2++
;
44
p = p->
next;
45
}
46
if
(c1 <
c2) {
47
swap(c1, c2);
48
swap(first, second);
49
}
50
while
(c1 !=
c2) {
51
c1--
;
52
first = first->
next;
53
}
54
while
(first !=
second) {
55
first = first->
next;
56
second = second->
next;
57
}
58
return
second->
data;
59
}
60
61
int
main() {
62
node *head =
new
node(
3
);
63
head->next =
new
node(
6
);
64
head->next->next =
new
node(
9
);
65
head->next->next->next =
new
node(
15
);
66
head->next->next->next->next =
new
node(
30
);
67
node *second =
new
node(
10
);
68
second->next = head->next->next->
next;
69
cout <<
getintersect(head, second);
70
return
0
;
71
}
?第四第五個方法不太容易想到
Data Structure Linked List: Write a function to get the intersection point of two Linked Lists.
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

