问答题 设有大小不等的n个数据组(n个数据组中数据的总数为m),顺序存放在空间区D内,每个数据占一个存储单元,数据组的首地址由数组S给出(如右图所示),试编写将新数据x插入第i个数据组的末尾且属于第i个数据组的算法,插入后,空间区D和数组S的相互关系仍保持正确。【东北大学2000六(15分)】
【正确答案】正确答案:在向量D内插入元素,首先要查找插入位置,数据x插入第i个数据组的末尾,即第i+1个数据组的开始,而第i(1≤i≤n)个数据组的首地址由数组S(即数组元素S[i])给出。其次,数据x插入后,还要维护数组S,以保持空间区D和数组S的正确的相互关系。if(i==n)D[m]=x; //在第n个数据组末尾插入元素i>=l&&i<:n,m是元素个数else(for(j=m一1 ; j>=s[i+1];j—一)D[j+1]=D[j]; //第i+1个数据组及以后元素后移 D[s[i+1\]\]=x; //将新数据x插入 for(j=i+1;j<=nj j++)s[j]++; //维护空间区D和数组s的关系 } //结束元素插入 m++; //空间区D的数据元素个数增1
【答案解析】