typedef struct
{
elemType data[MAX_SIZE_16];
int length;
}tableSeq;
int init_tableSeq(tableSeq* table)
{
table->length = 0;
return 1;
}
int clear_tableSeq(tableSeq* table)
{
table->length = 0;
return 1;
}
int empty_tableSeq(tableSeq* table)
{
return (table->length==0);
}
int length_tableSeq(tableSeq* table)
{
return (table->length);
}
int destory_tableSeq(tableSeq* table)
{
table->length = 0;
return 1;
}
int show_tableSeq(tableSeq* table)
{
for (int i = 0; i < table->length; i++)
{
printf("%d,", table->data[i]);
}
printf("\b \n");
return 1;
}
int create_tableSeq(tableSeq* table, elemType elem[], int length)
{
for (int i = 0; i < length; i++)
{
table->data[i] = elem[i];
}
table->length = length;
return 1;
}
int insert_tableSeq(tableSeq* table, int order, elemType *elem)
{
if (table->length == MAX_SIZE_16)
{
printf("插入失败,顺序线性表已经满!\n");
return -1;
}
else if (order <= 0|| order-1 > table->length)
{
printf("插入失败,插入位置存在问题!\n");
return -1;
}
else if (order > 0 || order <= table->length)
{
for (int i = table->length; i >= order - 1; i--)
{
table->data[i + 1] = table->data[i];
}
table->data[order - 1] = elem;
table->length++;
printf("插入成功!\n");
return 1;
}
return -1;
}
elemType delete_tableSeq(tableSeq* table, int order, elemType elem)
{
if (table->length == 0)
{
printf("删除失败,线性表为空!");
return -1;
}
else if (order <= 0 || order >table->length)
{
printf("删除失败,删除位置存在问题!");
return -1;
}
else if (order > 0 || order <= table->length)
{
elem = table->data[order - 1];
for (int i = order; i < table->length; i++)
{
table->data[i - 1] = table->data[i];
}
table->length--;
return elem;
}
return -1;
}
elemType search_key_tableSeq(tableSeq* table, int order)
{
if (table->length == 0 || order <=0 || order > table->length)
{
printf("查找失败,查找位置存在问题!");
return -1;
}
else
{
return table->data[order - 1];
}
}
int search_value_tableSeq(tableSeq* table,elemType elem)
{
for (int i = 0; i < table->length+1; i++)
{
if (table->data[i] == elem)
{
return i + 1;
}
}
return -1;
}
int merge_table(tableSeq*A, tableSeq*B, tableSeq*C)
{
elemType * tempArray = (elemType*)malloc(sizeof(elemType) * (A->length+B->length));
for (int i = 0; i < A->length; i++)
{
tempArray[i] = A->data[i];
}
for (int i = A->length; i < (A->length + B->length); i++)
{
tempArray[i] = B->data[i- A->length];
}
for (int i = 0; i < (A->length + B->length); i++)
{
C->data[i] = tempArray[i];
}
C->length = A->length + B->length;
free(tempArray);
return 1;
}
int table_seq()
{
tableSeq A;
tableSeq B;
tableSeq C;
printf("初始化成功返回1:%d\n",init_tableSeq(&A));
printf("顺序表为空返回非0,非空返回0:%d\n", empty_tableSeq(&A));
printf("顺序表长度:%d\n", length_tableSeq(&A));
int arrA[3] = { 1,2,3 };
create_tableSeq(&A, arrA, 3);
printf("顺序表内容:");
show_tableSeq(&A);
printf("顺序表为空返回非0,非空返回0:%d\n", empty_tableSeq(&A));
printf("顺序表长度:%d\n", length_tableSeq(&A));
printf("清空成功返回1:%d\n", clear_tableSeq(&A));
printf("顺序表为空返回非0,非空返回0:%d\n", empty_tableSeq(&A));
printf("顺序表长度:%d\n", length_tableSeq(&A));
insert_tableSeq(&A, 1, 100);
printf("顺序表内容:");
show_tableSeq(&A);
insert_tableSeq(&A, 1, 101);
printf("顺序表内容:");
show_tableSeq(&A);
insert_tableSeq(&A, 2, 99);
printf("顺序表内容:");
show_tableSeq(&A);
printf("按序查值,第二个元素是:%d\n",search_key_tableSeq(&A, 2));
printf("按值查序,100这个元素是第几个:%d\n", search_value_tableSeq(&A, 100));
int deleteVer=0;
printf("删除的第二个元素值为:%d\n",delete_tableSeq(&A, 2, deleteVer));
printf("顺序表内容:");
show_tableSeq(&A);
int arrB[3] = { 1,2,3 };
create_tableSeq(&B, arrB, 3);
merge_table(&A, &B, &C);
printf("顺序表内容:");
show_tableSeq(&C);
destory_tableSeq(&A);
destory_tableSeq(&B);
destory_tableSeq(&C);
return 0;
}