顺序表按元素删除
参数:删除元素,顺序表
1.调用元素查找的函数
4.根据下表删除 delete_sub(list,sub);
//删除元素
void delete_element(int element, Sqlist *list)
{
if (NULL == list)
{
printf("delete_element error: list is NULL\n");
return;
}
int sub = search_sub_sqlist(element, list);
if (sub != -1)
{
delete_sub(list, sub);
printf("Element %d deleted from the list\n", element);
} else
{
printf("Element %d not found in the list\n", element);
}
}
顺序表按元素修改
参数:
1.调用元素查找的函数
4.根据下表修改update_sub(list,sub);
//元素修改
void update_sub(Sqlist *list, int old_element, int new_element)
{
int pos = search_sub_sqlist(old_element, list);
if (pos == SUCCESS)
{
for (int i = 0;i <list->len; i++)
{
if (list->data[i] == old_element)
{
change_sub_sqlist(new_element, i, list);
break;
}
}
} else
{
printf("Element %d not found in the list.\n", old_element)
}
}
/顺序表按元素查找
参数:顺序表,查找的元素
1.判断顺序表是否位空
2.判断顺序表是否创建
3.循环顺序表的元素,如果存在则返回下表sub,否则-1
//顺序表按元素查找
int search_sub_sqlist(int sub, Sqlist *list)
{
// 判断顺序表是否为空
if (NULL == list || list->len == 0)
{
printf("search_sub_sqlist error: List is empty or not cre
return -1;
}
// 循环顺序表的元素
for (int i = 0; i< list->len; i++)
{
if (list->data[i] == sub)
{
printf("Element %d found at position %d\n", sub, i);
return i; // 返回元素的下标
}
}
printf("Element %d not found\n", sub);
return -1; // 未找到元素,返回-1
顺序表去重
int remove_same(Sqlist *list)
{
//1.判断顺序表为空
//2.判断顺序表是否创建
if(NULL==list || 0==list->len)
return FALSE;
//3.去重
for(int i=0;i<list->len;i++)
{
for(int j=i+1;j<list->len;j++)
{
if(list->data[i]==list->data[j])
{
//删除j对应的元素
delete_sub(list,j);
j--;
}
}
}
return SUCCESS;
}
顺序表排序 (冒泡、选择排序)
//冒泡排序:
void bubble_sort(Sqlist *list)
{
if (NULL == list || list->len <= 1)
{
printf("bubble_sort error\n");
return;
}
for (int i = 0; i < list->len - 1; i++)
{
for (int j = 0; j < list->len - 1 - i; j++)
{
if (list->data[j] < list->data[j + 1])
{
datatype temp = list->data[j];
list->data[j] = list->data[j + 1];
list->data[j + 1] = temp;
}
}
}
}
//选择排序;
void selection_sort(Sqlist *list)
{
if (NULL == list || list->len<= 1)
{
printf("selection_sort error\n");
return;
}
for (int i = 0; i< list->len - 1; i++)
{
int min_index = i;
for (int j = i + 1; j < list->len; j++)
{
if (list->data[j] <list->data[min_index])
{
min_index = j;
}
}
if (min_index != i)
{
datatype temp = list->data[i];
list->data[i] = list->data[min_index];
list->data[min_index] = temp;
}
}
}
顺序表释放
Sqlist* free_fun(Sqlist *list)
{
//1.判断顺序表是否创建
if(NULL==list )
return NULL;
free(list);
list=NULL;
return list;
}