作业:
1,单向链表简单选择排序
2,单向链表按元素插入
3,单向链表按元素修改
代码
test.c
/*
* function: 简单选择排序
* @param [ in]
* @param [out]
* @return
*/
void Simple(Linklist L)
{
if (NULL == L || L -> next == NULL)
{
return;
}
int len = len_Linklist(L);
int i, j;
Linklist p, q;
for (i = 0; i < len; i++, L = L -> next)
{
q = L;
for (j = i + 1, p = L -> next; j < len; j++, p = p -> next)
{
if (q -> data > p -> data)
{
q = p;
}
}
if (q != L)
{
datatype t = q -> data;
q -> data = L -> data;
L -> data = t;
}
}
}
/*
* function: 单项链表按元素插入
* @param [ in]
* @param [out]
* @return
*/
Linklist insert_by_data(Linklist L, datatype key, datatype e)
{
int insert_pos = search_by_data(key, L);
if (insert_pos == 1)
{
return L;
}
L = insert_by_pos(e, insert_pos, L);
return L;
}
/*
* function: 单项链表按元素插入
* @param [ in]
* @param [out]
* @return
*/
Linklist Insert_by_data(Linklist L, datatype key, datatype e)
{
int insert_pos = search_by_data(key, L);
if (insert_pos == -1)
{
return L;
}
L = insert_by_pos(e, insert_pos, L);
return L;
}
/*
* function: 单项链表按元素修改
* @param [ in]
* @param [out]
* @return
*/
Linklist update_by_data(Linklist L, datatype key, datatype e)
{
int update_pos = search_by_data(key, L);
if (update_pos == -1)
{
return L;
}
L = update_by_pos(e, update_pos, L);
return L;
}
main.c
Simple(L);
datatype key;
printf("please enter update key:");
scanf("%d", &key);
printf("please enter element:");
scanf("%d", &e);
L = update_by_data(L, key, e);
output(L);
printf("please enter insert key:");
scanf("%d", &key);
printf("please enter element:");
scanf("%d", &e);
L = insert_by_data(L, key, e);
output(L);
结果
思维导图