[求助]数据结构问题
k=0;i=j=0;
a=get(La,i);b=get(Lb,j);
if(a<b) {insert(Lc,++k,a);++i;}
else {insert(Lc,++k,b);++j;}
想请教下,++k在语句中的含义
++k,在C语言中是先+1再运算,如果a<b的话,是把a放到Lc[0]还是放到L[1]???
参考答案:此题目中有三个数组,La,Lb,Lc
i为从La中待取的元素
j为从Lb中待取的元素
k为将插入Lc中的位置
取得La中i位置的元素为a,和Lb中j位置的元素b比,
如果a小于b,那么将a插入Lc中的K位置,取La中下一个元素和b比
如果a大于或者等于b,刚将b插入Lc中的K位置,取下一个Lb中元素和a比
换句话说将小的插入Lc中,再取再比。
总结功能就是将数组La和Lb按小到大排序,当La和Lb中的数据都是小到大的时候,结果Lc是正确的,合并两个数组组成新的小到大顺序。
程序中的++K,很明鲜第一次把a插入了1号位置,第二次插入了2号位置
结果数组中是有空隙的,如果去除空隙,请改为k++.
昨天打成3号位置是我错了,只第一个元素是空的
因为开始时候K是0,在插入操作之前进行了+1,所以变成了1