#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 40001
typedef int DataType;
typedef struct
{
DataType a[N];
DataType a_lenth;
}Linelist_1;
typedef struct
{
DataType a[N];
DataType a_lenth;
}Linelist_2;
// 初始化线性表
void Init_Line(Linelist_1& L_1, Linelist_2& L_2)
{
L_1.a_lenth = 0;
L_2.a_lenth = 0;
}
int main()
{
Linelist_1 L_1;
Linelist_2 L_2;
int value;
Init_Line(L_1, L_2);
// 给数组存数据
cin >> L_1.a_lenth;
cout << "请输入数据:(若为零元素则需要重新输入)" << endl;
for (int i = 0; i < L_1.a_lenth;){
cin >> value;
if (value != 0) L_1.a[i] = value, i++; // 当输入的数据非零时存储到线性表中,否则不存入
}
// 将线性表1中小于零的数据进行分离到线性表2中
for (int i = 0; i < L_1.a_lenth;)
// 检测是否小于零,小于零则将该数分离出来存在线性表2中,反之读取下一个数据
if(L_1.a[i] < 0){
// 存入线性表2中
L_2.a[L_2.a_lenth++] = L_1.a[i];
L_1.a_lenth--;
// 删除线性表1中当前读取的数;
for (int j = i; j < L_1.a_lenth; j++)
L_1.a[j] = L_1.a[j + 1];
}else i++;
cout << endl << endl;
// 输出顺序表
for (int i = 0; i < L_1.a_lenth; i++) cout << L_1.a[i] << ' ';
cout << endl;
for (int i = 0; i < L_2.a_lenth; i++) cout << L_2.a[i] << ' ';
cout << endl;
return 0;
}