两个链表的交叉合并,最简单的,求C++代码。

 我来答
舒乐秋
2011-09-26 · TA获得超过146个赞
知道答主
回答量:577
采纳率:100%
帮助的人:279万
展开全部
在此我只给出两个链表交叉合并的函数代码,而且是基于下面前提的:

链表chain1,链表长度为a,链表chain2,链表长度为b;
当a>=b时,chain1的结构依次排在chain2中相应的结构之前,且chain1中多出来的元素跟在chain2的结尾,例如:
chain1长为5,元素分别: 1、3、5、7、9
chain2长为3,元素分别: 2、4、6
则排列后新的链表为:1、2、3、4、5、6、7、9(注意7和9)
当b>a时则反之。

测试的方法:
把原main中的hebing(p1,p2,a); 这 一句改为:
p1 = inter_link(p1,a,p2,b);
即可

下面为代码:

struct student* inter_link(struct student* chain1, int a, struct student* chain2, int b)
{
int temp;
struct student *head, *p1, *p2, *pos;

/*调整相应数据*/
if(a>=b)
{
head = p1 = chain1;
p2 = chain2;
}
else/*b>a*/
{
head = p1 = chain2;
p2 = chain1;
temp = a, a = b, b = temp;/*交换a和*/
}

/*下面把p1的每个元素插在p2相应元素之前,p1长a,p2长b*/
pos = head;/*此时pos指向p1中的第一个元素*/
while(p2 != NULL)
{
p1 = p1->next;
pos->next = p2;
pos = p2;
p2 = p2->next;
pos->next = p1;
pos = p1;
}

return head;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式