写正确函数需要注意的地方:两个有序链表的合并

Node* merge(Node* p1, Node* p2)
{
	//检验输入参数。
	if(p1==NULL)
		return p2;
	else if(p2==NULL)
		return p1;
	Node* head;
	Node* p;
	if (p1->value>p2->value)
	{//使得p1的第一个元素大于p2的。
		p=p1;
		p1=p2;
		p2=p;
	}
	head=p=p1;//存储头结点。

	for (p1=p1->pNext; p1!=NULL && p2!=NULL; )
	{//添加较小的元素
		if (p1->value>p2->value)
		{
			p->pNext=p2;
			p=p->pNext;
			p2=p2->pNext;
		}
		else
		{
			p->pNext=p1;
			p=p->pNext;
			p1=p1->pNext;
		}
	}

//将剩下的元素直接置于合并的链表后面。
	if (p1==NULL)
	{
		p->pNext=p2;
	}
	else
		p->pNext=p1;
	return head;
}


1. 检验输入参数。

2. 头指针首先存储下来。

3. 循环结束后,将p1或者p2中的元素直接置于链表后面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值