3、已知一个顺序表A,请设计一个算法,将A分解为两个顺序表B,C,其中顺序表B中的值是A中小于0的元素,C中的值是A中大于0的元素。C语言用指针
时间: 2024-06-04 11:11:48 浏览: 25
实现。
void split(int A[], int n, int B[], int *lenB, int C[], int *lenC) {
int i;
*lenB = *lenC = 0;
for (i = 0; i < n; i++) {
if (A[i] < 0) {
B[*lenB] = A[i];
(*lenB)++;
} else {
C[*lenC] = A[i];
(*lenC)++;
}
}
}
// 测试
int main() {
int A[] = {-3, 2, 1, 0, -4, 5, -6};
int n = sizeof(A) / sizeof(int);
int B[n], lenB, C[n], lenC;
split(A, n, B, &lenB, C, &lenC);
printf("B: ");
for (int i = 0; i < lenB; i++) {
printf("%d ", B[i]);
}
printf("\nC: ");
for (int i = 0; i < lenC; i++) {
printf("%d ", C[i]);
}
return 0;
}
// 输出:B: -3 -4 -6
// C: 2 1 0 5
阅读全文