顺序表按元素删除
参数:删除元素,顺序表
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 crereturn -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; }