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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
