【链表面试题】求两个已排序单链表中相同的数据

版权声明:如需转载,请注明出处 https://blog.csdn.net/baidu_41813368/article/details/83794399

整体思路

1.分别创建两个结点变量cur1,cur2
2.cur1->data和cur2->data比较
3.如果cur1->data大于cur2->data
cur2 = cur2->next
4.如果cur1->data小于cur2->data
cur1 = cur1->next
5.如果cur1->data= cur2->data
cur1和cue2 同时向后走

代码

//求两个已排序单链表中相同的数据。void UnionSet(Node* l1,Node* l2);
void PrintIntersection(SListNode *List1, SListNode *List2)
{
	SListNode *cur1 = List1;
	SListNode *cur2 = List2;
	while (cur1 != NULL && cur2 != NULL)
	{
		if (cur1->data < cur2->data)
		{
			cur1 = cur1->Next;
		}
		else if (cur1->data > cur2->data)
		{
			cur2 = cur2->Next;
		}
		else
		{
			printf("  %d  ", cur1->data);
			cur1 = cur1->Next;
			cur2 = cur2->Next;
		}
	}
}

测试

void TestPrintIntersection()
{
	SListNode*List1 = NULL, *List2 = NULL;
	SListPushBack(&List1, 1);
	SListPushBack(&List1, 3);
	SListPushBack(&List1, 4);
	SListPushBack(&List1, 6);

	SListPushBack(&List2, 1);
	SListPushBack(&List2, 5);
	SListPushBack(&List2, 6);

	PrintIntersection(List1,List2);
}

结果

在这里插入图片描述

进阶

如果相等的数字重复出现,这个数字只出现一次

void TestPrintIntersection()
{
	SListNode*List1 = NULL, *List2 = NULL;
	SListPushBack(&List1, 1);
	SListPushBack(&List1, 3);
	SListPushBack(&List1, 3);
	SListPushBack(&List1, 4);
	SListPushBack(&List1, 6);

	SListPushBack(&List2, 1);
	SListPushBack(&List2, 1);
	SListPushBack(&List1, 3);
	SListPushBack(&List2, 5);
	SListPushBack(&List2, 6);

	PrintIntersection(List1,List2);
}


//求两个已排序单链表中相同的数据。void UnionSet(Node* l1,Node* l2);
void PrintIntersection(SListNode *List1, SListNode *List2)
{
	SListNode *cur1 = List1;
	SListNode *cur2 = List2;
	DataType data;
	while (cur1 != NULL && cur2 != NULL)
	{
		if (cur1->data < cur2->data)
		{
			cur1 = cur1->Next;
		}
		else if (cur1->data > cur2->data)
		{
			cur2 = cur2->Next;
		}
		else
		{
			printf("  %d  ", cur1->data);
			data = cur1->data;
			while (cur1 != NULL && cur1->data == data)
			{
				cur1 = cur1->Next;
			}
			while (cur2 != NULL && cur2->data == data)
			{
				cur2 = cur2->Next;
			}
		}
	}
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/baidu_41813368/article/details/83794399
今日推荐