两个有序链表(相邻元素可能相同)找出他们交集,并把结果放到另一链表中
2012-02-18 00:25
423 查看
两个有序链表(相邻元素可能相同),找出他们的交集,并把结果放到另一链表中,代码如下:
typedef struct Node* pNode; struct Node { int val; struct Node *next; }; pNode merge(pNode head1, pNode head2) { pNode head = NULL; pNode p1 = head1; pNode p2 = head2; pNode p3 = NULL; pNode p4 = NULL; if (NULL == p1 || NULL == p2) { return NULL; } /*先找出相交的第一个元素,并作为存储交集链表的头结点*/ while (p1 && p2) { if (p1->val == p2->val) { head = (pNode)malloc(sizeof(struct Node)); head->val = p1->val; head->next = NULL; p1 = p1->next; p2 = p2->next; break; } else if (p1->val > p2->val) { while (p2->next != NULL && p2->val == p2->next->val) { p2 = p2->next; } p2 = p2->next; } else { while (p1->next != NULL && p1->val == p1->next->val) { p1 = p1->next; } p1 = p1->next; } } p3 = p4 = head; while (p1 && p2) { if (p1->val == p2->val && p1->val != p3->val && p2->val != p3->val) { p4 = (pNode)malloc(sizeof(struct Node)); p4->next = NULL; p4->val = p1->val; p3->next = p4; p3 = p4; p1 = p1->next; p2 = p2->next; } else if (p1->val > p2->val) { while (p2->next != NULL && p2->val == p2->next->val) { p2 = p2->next; } p2 = p2->next; } else { while (p1->next != NULL && p1->val == p1->next->val) { p1 = p1->next; } p1 = p1->next; } } return head; }
相关文章推荐
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- 已知两个链表 la和 lb,其元素值递增排序。编程将la和lb合并成一个递减有序(相同值元素只保留一个)的链表lc。(北方名校经典试题) 本题选做
- 假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并为一个按元素值递减 有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原装(即A表和
- 两个有序整形数组找出二者相同的元素和不同的元素
- php找出两个有序数组中的相同元素
- 假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并为一个按元素值递减 有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原装(即A表和
- 找出两个有序数组中相同的元素
- 假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并为一个按元素值递减 有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原装(即A表和
- 给定一个值S,在有序数组中找出两个元素A和B,使 A+B = S.
- 将两个递增的链表合并成一个递减的链表(相同的元素只留下一个),并要求利用原表结点
- 数组A中任意两个相邻元素大小相差1,现给定这样的数组A和目标整数t,找出t在数组A中的位置。
- 求两个有序链表的交集和差集
- 只调整指针来交换两个相邻的元素【双链表】
- PAT 2-12 两个有序链表序列的交集(C语言实现)
- 给定一个值S,在有序数组中找出两个元素A和B,使 A+B = S.
- 找出两个含有相同元素个数的递增数列中第n小的数
- 如果两个对象不相同,他们的hashcode可能相同?
- 有两个有序整数集合a和b,写一个函数找出它们的交集?
- 7-2 两个有序链表序列的交集(20 分)
- 找出两个数组中相同的元素