Chapter 2
已知在一維數(shù)組A[m + n]中依次存放兩個線性表(a1,a2, a3,...,am)和(b1,b2,b3,...,bn,)。編寫一個函數(shù),將數(shù)組中兩個順序表的位置互換,即將(b1,b2,b3,...,bn,)放在(a1,a2, a3,...,am)的前面。
#include<stdio.h>
#include<stdlib.h>
#define Max 100
struct SqList{
int data[Max] = {1, 3, 5, 7, 9, 11, 13};
int length = 7;
};
void show(SqList s){
if(s.length == 0){
printf("線性表為空");
return;
}
for(int i = 0; i < s.length; i++){
printf("%d ", s.data[i]);
}
printf("\n");
}
void reverse(SqList &s, int m, int n){
int temp;
for(int i = m; i < (m + n) / 2; i++){
temp = s.data[i];
s.data[i] = s.data[m + n - i - 1];
s.data[m + n - i - 1] = temp;
}
show(s);
}
// 注意傳遞的參數(shù)
void change(SqList &s, int m, int n){
printf("整個逆置:\n");
reverse(s, 0, m + n);
printf("前 %d 個逆置:\n", n);
reverse(s, 0, n);
printf("后 %d 個逆置:\n", m);
reverse(s, n, n + m);
}
int main(){
SqList s;
printf("互換前:");
show(s);
change(s, 3, 4);
printf("互換后:");
show(s);
return 0;
}