早教吧 育儿知识 作业答案 考试题库 百科 知识分享

求解数据结构一道算法题目是单链线性表La和Lb的元素按值非递减排列归并La和Lb得到新的单链线性表Lc,Lc的元素也按值非递减排列.前面的比较La和Lb的元素值算法都看懂了但是连接La和Lb剩余

题目详情
求解数据结构 一道算法
题目是单链线性表La和Lb的元素按值非递减排列
归并La和Lb得到新的单链线性表Lc,Lc的元素也按值非递减排列.
前面的比较La和Lb的元素值算法都看懂了
但是连接La和Lb剩余结点的算法看不太懂了
书上说了两种算法
1,
pc->next=pa?pa:pb;//插入剩余段
free(Lb);
很奇怪pa不是一个指针吗
怎么实现pc的下一个指针是pa 就将La剩余部分接到Lc表中呢
第二种算法:
if(pa) Append(Lc,pa)//链接La中剩余的结点
else Append(Lc,pb)//链接Lb中剩余的结点
这种算法链接倒是看懂了 但是条件if(pa)什么意思 是表示a,b的元素比较完后剩下pa了?
▼优质解答
答案和解析
先从第一种算法说起吧,指针不是指向值啊?指针也是地址啊,把地址赋值给它就是把值赋给它,下一个指针是pa,后面的pb的指针就是null了,再自加,就逐渐一个一个的把La的剩余部分连接到Lc表中了.
第二个算法,if(pa)表示pa不为空,即null,pb所有的都加入了Lc,所以就把pa加入Lc
.你主要是那个null没搞懂,如果La全部加入到Lc中,则pa为空.如果Lb全部加入到Lc中,则pb为空,然后就把pa的剩下的全部加入Lc