每日一道编程题(4):链表交并差

每日一道编程题(4):链表交并差

@ 灰灰考研
(2018南开大学初试)两个有序的无头结点的链表La,Lb。编写函数:如何以最优的方式找出二者的交集,并且把结果存在一个新链表中返回。

单链表的类型定义如下:

Typeddf struct LNode{

Element Type data;

Struct LNode *next;

}LNode, *ListNode;

函数原型: ListNode* Inter(ListNode *A, ListNode *B)
在这里插入图片描述


//链表交并差
Listcode *Insert(ListNode *plist1 , ListNode *plist2){
	//判断两个链表是否为空
	if(plist1==NULL||plist2=NULL){
		return NULL;
	}
	//头结点
	ListNode *newList = ByNode(0);
	ListNode *tail = newList;//定义一个节点指向链表头

	while(plist1&&plist2){
		if(plist1->data==plist2->data){
			tail -> next = plist1;
			tail = plist1;

			plist1 ->next = plist1;
			plist2 ->next = plist2;
		}else if(plist1->data>plist2->data){
			//让小的走
			plist2 = plist2 -> next;

		}else {
		   plist1 = plist1 ->next;
		}
	}

	//下面这一步非常重要
	tail ->next = NULL;//说明链表合集结束
	return newList->next;
}

猜你喜欢

转载自blog.csdn.net/qq_41033299/article/details/88771251
今日推荐