线性表习题整理(二)

线性表习题整理(二)

题目

已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m和n。试写一算法将这两个链表连接在一起(即令其中一个表的首元结点连在另一个表的最后一个结点之后),假设指针hc指向连接后的链表的头结点,并要求算法以尽可能短的时间完成连接运算。请分析你的算法和时间复杂度

思想

根据给定的两个链表的长度选择较短的链表并找到其尾结点,注意释放长链表的头结点

代码段

Status T(LinkList ha,LinkList hb,LinkList *hc)
{
	LinkList pa,pb;
	pa=ha;
	pb=hb;
	if(ha&&hb){
		while(pa->next&&pb->next)
		{
		//循环起到判断pa和pb哪个更短的效果
			pa=pa->next;
			pb=pb->next;
		}
		if(!pa->next)
		{
			//若pa更短,则将hb插到pa的尾部
			*hc=ha;
			pa->next=hb->next;
		}
		if(!pb->next)
		{
			*hc=hb;
			pb->next-ha->next;
		}
		return OK;
	}
	return ERROR;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值