题目:
已知在一维数组A[m+n]中依次存放两个线性表(a1,a2,a3,…,am)和(b1,b2,b3,…,bn)。试编写一个函数,将数组中两个顺序表的位置互换,即将(b1,b2,b3,…,bn)放在(a1,a2,a3,…,am)的前面。
伪代码
文字思想:
本题难点在于m和n大小情况未知
1)m比n大时,例子:(1,2,3,4,5)(6,7,8)——》(6,7,8)(1,2,3,4,5);
用暴力法还是比较简单的,可以另建一个新表存储,则空间复杂度为O(n),或者是将表往后移动n位,然后将(b1,b2……,bn)换到前面表中内容位空地方处
void swap(int &a,int b) {
int c = a;
a = b;
b = c;
}
void exchange(SqList &L,int m,int n) {
int x = L.length,i;
// 线性表空间是已经申请过的,不能直接加长度
SqList T;
T.length = 0;
for (i = 0;i < x;i++) {
T.data[i] = L.data[i];
T.length += 1;
}
for (i = x;i < x + n;i++) {
T.data[</

本文介绍了一道关于数据结构的代码题目,涉及如何在C语言中实现两个顺序表在数组内的位置互换。通过伪代码、具体实现和效果展示,帮助读者理解操作过程。
最低0.47元/天 解锁文章
3873

被折叠的 条评论
为什么被折叠?



