//根据元素删除
int delete_element(sqlist *p, data_type element)
{
if (NULL == p || len_empty(p))
{
printf("Null Or Error");
return -1;
}
int index = search_element(p, element); //根据元素查找下表
if (index == -1)
{
printf("Null Or Error");
return -1;
}
int result = delete_index(p, index);
if (result)
{
printf("delete success \n");
return 0;
}
else
{
return -1;
}
}
//根据元素修改
int edit_element(sqlist *p, data_type element, data_type element_edit)
{
if (NULL == p || len_empty(p))
{
printf("Null Or Error");
return -1;
}
// p->data[index] = element;
int index = search_element(p, element); //根据元素查找下表
if (index == -1)
{
return -1;
}
int result = edit_index(p, index, element_edit);
if (result)
{
printf("edit success \n");
return 0;
}
else
return -1;
// for (int i = 0; i < p->len; i++)
// {
// /* code */
// if (p->data[i] == element)
// {
// p->data[i] = element_edit;
// }
// }
// printf("edit success \n");
// return 0;
}
//顺序表去重
void list_ws(sqlist *p)
{
for (int i = 0; i < p->len - 1; i++)
{
for (int j = i + 1; j < p->len; j++)
{
if (p->data[i] == p->data[j])
{
delete_index(p, j);
j--; //防止漏删
}
}
}
}
//顺序表排序
void list_bubble(sqlist *p)
{
for (int i = 1; i < p->len; i++)
{
/* code */
for (int j = 0; j < p->len - i; j++)
{
/* code */
if (p->data[j] > p->data[j + 1])
{
/* code */
data_type t = p->data[j];
p->data[j] = p->data[j + 1];
p->data[j + 1] = t;
}
}
}
}
//顺序表合并
sqlist * list_double(sqlist *a, sqlist *b, sqlist *c)
{
int index_a=0;
int index_b=0;
//比较ab两个数组同下表的值,把最大的给c
//两个数组的下表都小于c的下表证明都有数据给c有一个下表>=c的下表结束 ,然后单独把剩余的值给c
//比较
while (index_a < c->len && index_b < c->len)
{
if (a->data[index_a] > b->data[index_b])
{
c->data[c->len] = a->data[index_a];
c->len++;
index_a++;
}
else
{
c->data[c->len] = b->data[index_b];
c->len++;
index_b++;
}
}
// //ab的下表必须大于顺序标的下表才证明数据完全便利完
// //把a剩余元素给c
while (index_a < c->len)
{
c->data[c->len] = a->data[index_a];
c->len++;
index_a++;
}
while (index_b < c->len)
{
c->data[c->len] = b->data[index_b];
c->len++;
index_b++;
}
// output_element(c);
printf("double success\n");
return c;
// while (index_a < a->len && index_b < b->len)
// {
// /* code */
// if (a->data[index_a] > b->data[index_b])
// {
// c->data[c->len] = a->data[index_a];
// c->len++;
// index_a++;
// }
// else
// {
// c->data[c->len] = b->data[index_b];
// c->len++;
// index_b++;
// }
// }
// //ab的下表必须大于顺序标的下表才证明数据完全便利完
// //把a剩余元素给c
// while (index_a<c->len)
// {
// c->data[c->len] = a->data[index_a];
// c->len++;
// index_a++;
// }
// //把b剩余元素给c
// while (index_b<c->len)
// {
// c->data[c->len] = b->data[index_b];
// c->len++;
// index_b++;
// }
}
//顺序表空间释放
sqlist *free_space(sqlist *p)
{
if (NULL == p)
{
return NULL;
}
free(p);
p = NULL;
printf("end free\n");
return p;
}