九度题目1505:两个链表的第一个公共结点
来源:互联网 发布:飞控led软件下载 编辑:程序博客网 时间:2024/05/16 07:44
- 题目描述:
输入两个链表,找出它们的第一个公共结点。
- 输入:
输入可能包含多个测试样例。
对于每个测试案例,输入的第一行为两个整数m和n(1<=m,n<=1000):代表将要输入的两个链表的元素的个数。
接下来的两行,第一行为第一个链表的所有元素,中间用空格隔开。第二行为第二个链表的所有元素,中间用空格隔开。
- 输出:
对应每个测试案例,
输出两个链表的第一个公共结点的值。
如果两个链表没有公共结点,则输出“My God”。
- 样例输入:
5 41 2 3 6 74 5 6 73 31 5 72 4 72 31 34 5 6
- 样例输出:
67My God
#include<iostream>#include<limits.h>using namespace std;struct Node{ int val; Node *next; Node(int value):val(value),next(NULL){}};void list_construct(Node **head, int len){ int i; int val; Node *p; for(i=0;i<len;++i) { cin>>val; if(NULL==*head) { *head = new Node(val); p = *head; } else { p->next = new Node(val); p = p->next; } } return;}void list_print(Node *head){ while(head) { cout<<head->val; head = head->next; } return;}int get_length(Node *head){ int len = 0; while(head) { len++; head = head->next; } return len;}int common_point(Node *list1, Node *list2){ int len1 = get_length(list1); int len2 = get_length(list2); Node *p; int len; if(len1<len2) { p = list2; list2 = list1; list1 = p; len = len2; len2 = len1; len1 = len; } len = len1 - len2; while(len--) list1 = list1->next; while(list1||list2) { if(list1->val==list2->val) return list1->val; else { list1 = list1->next; list2 = list2->next; } } if(list1==NULL) return INT_MIN; }int main(){ int m,n; Node *list1, *list2;//list must be null,each loop int result; while(cin>>m>>n) { list1 = list2 = NULL; //代码中要求是初始为NULL,否则报错 不初始默认不是NULL list_construct(&list1,m); list_construct(&list2,n); // list_print(list1); // list_print(list2); result = common_point(list1,list2); if(result==INT_MIN) cout<<"My God"<<endl; else cout<<result<<endl; } return 0;}
此题难点不在算法,而在于链表的构建与处理上
1. 构建时,void list_construct(Node **head, int len);
注意Node **head
2. 求长度和其它
两链表长度的处理,把长的放在前面,好控制
3. 当构建时,两个list头要为空,因为代码是这样写的
0 0
- 题目1505:两个链表的第一个公共结点-九度
- 【九度】题目1505:两个链表的第一个公共结点
- 九度 题目1505:两个链表的第一个公共结点
- 九度题目1505:两个链表的第一个公共结点
- 九度OJ-题目1505:两个链表的第一个公共结点
- 题目1505:两个链表的第一个公共结点
- 【剑指Offer面试编程题】题目1505:两个链表的第一个公共结点--九度OJ
- 算法题目---两个链表的第一个公共结点
- 九度OJ 1505 两个链表的第一个公共结点 【数据结构】
- 剑指offer- 题目1505:两个链表的第一个公共结点 (2014.1.1)
- 题目:输入两个链表,找出它们的第一个公共结点
- 找出两个链表的第一个公共结点--总结
- 找出两个链表的第一个公共结点
- 找两个链表的第一个公共结点
- 找出两个链表的第一个公共结点
- 找出两个链表的第一个公共结点
- 找出两个链表的第一个公共结点
- 找出两个链表的第一个公共结点
- iPhone音频开发之:转换和录音(第二部分)
- iPhone音频开发之: 转换和录制[ 2014年版]
- Raphael.js绘制气泡墙
- 字符编码常识及问题解析
- struts2 不返回result的做法
- 九度题目1505:两个链表的第一个公共结点
- 使用CCRenderTexture来创建动态纹理
- 如何使用NSOperations和NSOperationQueues
- Storyboard入门到精通:自动布局
- iPhone音频开发之:程序实现播放音频
- windbg命令
- 在服务器上排除问题的头五分钟(干货)
- Core Graphics : 线,矩形和渐变效果
- 2013-2014年,回首一瞬间