【数据结构】寻找2个单链表相同的值
来源:互联网 发布:windows桌面分类框 编辑:程序博客网 时间:2024/06/15 23:43
在关于基础单链表的面试题中,有一道这样的面试题:
打印输出2个链表中的相同节点。
比如2个这样的链表。
你们也许会说,这个不是灰常灰常简单么。一个链表的一个值与另外一个链表的所有值比较,然后相同就输出它不就行了么。但是这样遍历的复杂度就高了,如果面试官会要求你只能够遍历这个链表一次的情况下去怎么做呢?
大家仔细思考一下:
1.2个链表2个指针,
2.然后当其中一个指针的值大的时候它就往后移。
3.相等2个输出当前节点,然后2个指针同时往后移动这不就好了么=。=
这个思路比较简单,我直接给出代码
void FindEqualData(PLinkNode oneHead,PLinkNode twoHead){//升序降序判断值,升序为0降序为1;int sortFlag = 0;assert(NULL != oneHead && NULL != twoHead);printf("相同的数据是:");if(oneHead->_data > oneHead->_next->_data){sortFlag = 1;}while(oneHead != NULL && twoHead != NULL){if(oneHead->_data > twoHead->_data){if(1 == sortFlag){oneHead = oneHead->_next;}else{twoHead = twoHead->_next;}}else if(oneHead->_data == twoHead->_data){printf("%d ",oneHead->_data);twoHead = twoHead->_next;oneHead = oneHead->_next;}else if(oneHead->_data < twoHead->_data){if(1 == sortFlag){twoHead = twoHead->_next;}else{oneHead = oneHead->_next;}}}}
在这个查找函数中,我增加了一个Flag值得判断,来由此判断这2个是升序链表还是降序列表,在面试的时候考虑一个问题必须要问清楚,在思考这个问题就需要跟面试官或者自己加上备注,要求,因为当一个是降序一个是升序的时候,之遍历一遍是不可能输出的。
只有当他们2个链表同时为升序链表或者是降序链表的时候才能够一次遍历完成相同值得输出。
就这样=。=
愿诸君与我一起进步。
本文出自 “剩蛋君” 博客,转载请与作者联系!
0 0
- 【数据结构】寻找2个单链表相同的值
- 寻找数组中相同值的位置
- 寻找相同元素的指针
- 寻找相同元素的指针
- 寻找相同且长度最长的字符串
- Anagrams 寻找相同的乱序的字母排列
- 寻找两个单链表中第一个相同的节点
- 寻找数组中不相同元素的个数
- 用Python寻找相同文件
- 【数据结构】单链表的倒序、删除相同结点、按值排序等简单操作用java实现
- 数据结构----实现对2个链表La,Lb有序合并,对相同的元素进行删除,
- 数据结构学习笔记6-寻找和为定值的两个数(二分查找)
- 取两个数据结构相同的datatable的差集
- 在某一个目录中寻找与指定的文件内容相同的文件
- 数据结构相同情况下数据表之间数据的快速"copy"
- C#在dataGridView中遍历,寻找相同的数据并定位
- C#在dataGridView中遍历,寻找相同的数据并定位
- 一行字符串,寻找其中出现相同且长度最长的子串
- 【C项目】注释转换项目
- 【C语言】顺序表,数组
- 【C语言】数据结构——动态顺序表
- 【软件理论】MVC概念
- 【数据结构】单链表的倒置
- 【数据结构】寻找2个单链表相同的值
- 【C++】小项目——内存泄露检测器
- 【C++】复数类的实现
- 【数据结构】链表与顺序表的优缺点,和2道经典的题
- 数据库连接异常Cannot get a connection, pool error Timeout waiting for idle object
- 【数据结构】二维数组中的查找
- java中的URLEncoder和URLDecoder类
- 升级到Xcode8和iOS10之后遇到的坑
- 【数据结构】用两个栈实现队列