#include<iostream>
using namespace std;
#define INIT_SIZE 30
typedef struct {
int* data;
int len;
}SeqList;
int initList_Seq(SeqList& L) {
L.data = new int[INIT_SIZE];
L.len = 0;
return 0;
}
int destroyList_Seq(SeqList& L) {
delete[] L.data;
L.data == NULL;
L.len = 0;
return 0;
}
typedef struct {
int data[INIT_SIZE];
int len;
}SqList;
int initList_Sq(SqList& L) {
L.len = 0;
return 0;
}
int destroyList_Sq(SqList& L) {
L.len = 0;
return 0;
}
int isemptyList_Sq(SqList L) {
if (L.len == 0)
return true;
return false;
}
int getList_Sq(SqList L,int i,int &e) {
if (i > L.len)
return false;
e = L.data[i - 1];
return e;
}
int creatList_Sq(SqList& L) {
int n;
cout << "输入元素个数:";
cin >> n;
for (int i = 0; i < n; i++) {
int e;
cin >> e;
L.data[i] = e;
L.len++;
}
return 0;
}
int printList_Sq(SqList L) {
for (int i = 0; i < L.len; i++)
cout << L.data[i] << " ";
cout << endl;
return 0;
}
int insertList_Sq(SqList& L, int i, int e) {
if (i<1 || i>L.len + 1)
return false;
if (L.len >= INIT_SIZE)
return false;
for (int j = L.len; j >= i; j--) {
L.data[j] = L.data[j - 1];
}
L.data[i - 1] = e;
L.len++;
return true;
}
int deleteList_Sq(SqList& L, int i, int& e) {
if (i<1 || i>L.len )
return false;
e = L.data[i - 1];
for (int j = i; j < L.len; j++)
L.data[j - 1] = L.data[j];
L.len--;
return e;
}
int unionList(SqList& L1, SqList& L2) {
int flag = 0;
if (L1.len + L2.len > INIT_SIZE)
return false;
for (int i = 0; i < L2.len; i++) {
for (int j = 0; j < L1.len; j++)
if (L2.data[i] == L1.data[j])
flag = 1;
if (flag == 0)
insertList_Sq(L1, L1.len, L2.data[i]);
flag = 0;
}
return true;
}
SqList unionList2(SqList& L1, SqList& L2) {
SqList L3;
initList_Sq(L3);
int i, j, num = 1;
for (i =0,j=0; i < L1.len && j < L2.len;) {
if (L1.data[i] <= L2.data[j])
insertList_Sq(L3, num++, L1.data[i++]);
else
insertList_Sq(L3, num++, L2.data[j++]);
}
while (i < L1.len)
insertList_Sq(L3, num++, L1.data[i++]);
while (j < L2.len)
insertList_Sq(L3, num++, L2.data[j++]);
return L3;
}
int main() {
SqList L1, L2;
initList_Sq(L1);
creatList_Sq(L1);
initList_Sq(L2);
creatList_Sq(L2);
SqList L3=unionList2(L1, L2);
printList_Sq(L3);
cout << L3.len << endl;
int a;
deleteList_Sq(L1, 2, a);
printList_Sq(L1);
cout << a << endl;
return 0;
}