给定一个列表,该列表中的每个元素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。,c语言,不用递归
时间: 2024-06-06 21:09:29 浏览: 21
可以使用迭代的方式来实现。首先创建一个空列表result,将输入列表加入一个栈中。然后不断地从栈顶取出列表进行处理,如果是一个整数,则添加到result中,如果是一个列表,则将其元素依次加入到栈中,继续进行处理。直到栈为空,说明所有列表已经被处理完毕,返回result即可。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
int main() {
int input[MAX_SIZE], result[MAX_SIZE];
int i, j, n, k, top;
printf("请输入列表长度:");
scanf("%d", &n);
printf("请输入列表元素:");
for (i = 0; i < n; i++) {
scanf("%d", &input[i]);
}
top = 0;
for (i = 0; i < n; i++) {
if (input[i] >= 0) {
result[top++] = input[i];
} else {
k = input[i];
while (k < 0) {
j = input[++i];
if (j >= 0) {
result[top++] = j;
} else {
k += j;
}
}
}
}
printf("简化后的列表为:");
for (i = 0; i < top; i++) {
printf("%d ", result[i]);
}
printf("\n");
return 0;
}