按值修改:
linklist.c 代码:
//按值进行修改函数
int list_update_value(LinkList L,datatype old_e,datatype new_e)
{
//判断逻辑
if(NULL==L||list_empty(L))
{
printf("按值修改失败\n");
return -1;
}
//查找到值所对应的位置
int p=list_search_value(L,old_e);
//按照位置修改查找到的值
list_update_pos(L,p,new_e);
printf("按值修改成功\n");
return 0;
}
效果:
选择排序:
linklist.c代码:
//使用选择排序排序链表
void list_sort(LinkList L)
{
int num=0;
int min=0;
int arr[num];
LinkList q=L->next;
while(q!=NULL)
{
arr[num]=q->data;
q=q->next;
num++;
}
//判断条件
if(NULL==L||list_empty(L))
{
printf("链表排序失败\n");
return ;
}
//排序条件
for(int i=0;i<L->len;i++)
{
min=i;
for(int j=i;j<L->len;j++)
{
if(arr[min]>arr[L,j])
{
min=j;
}
}
//交换元素
int temp=arr[min];
arr[min]=arr[i];
arr[i]=temp;
}
for(int i=0;i<L->len;i++)
{
printf("%c\t",arr[i]);
}
printf("选择排序完成\n");
}
效果:
main.c代码:
#include"linklist.h"
#include<stdio.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
LinkList L = list_create();
if(NULL==L)
{
return -1;
}
//制作菜单
int num; //菜单编号
while(1)
{
//显示菜单
printf("\t\t====链表管理功能====\n");
printf("\t\t\t0.结束菜单\n");
printf("\t\t\t1.头插\n");
printf("\t\t\t2.任意位置插入\n");
printf("\t\t\t3.查看\n");
printf("\t\t\t4.头删\n");
printf("\t\t\t5.任意位置删除\n");
printf("\t\t\t6.按任意位置修改\n");
printf("\t\t\t7.按值修改\n");
printf("\t\t\t8.选择排序\n");
printf("请输入您要进行的操作:");
scanf("%d",&num);
getchar();
//对出入的选项进行多分支选择
switch(num)
{
case 0: exit(0); //结束整个进程
case 1:
{
datatype e;
printf("请输入要插入的元素\n");
e=getchar();
list_insert_head(L,e);
break;
}
case 2:
{
int pos;
printf("请输入要插入的位置\n");
pos=getchar();
printf("请输入要插入的元素\n");
datatype e=getchar();
list_inset_pos(L,pos,e);
break;
}
case 3:
{
list_show(L);
break;
}
case 4:
{
list_delete_head(L);
break;
}
case 5:
{
printf("请输入要删除的位置\n");
int pos=getchar();
list_delete_pos(L,pos);
break;
}
case 6:
{
printf("请输入要修改的位置\n");
int pos=getchar();
printf("请输入修改后的数值\n");
getchar();
datatype e=getchar();
list_update_pos(L,pos,e);
break;
}
case 7:
{
printf("请输入要修改的值\n");
datatype old_e=getchar();
printf("请输入修改后的值\n");
getchar();
datatype new_e=getchar();
list_update_value(L,old_e,new_e);
break;
}
case 8:
{
list_sort(L);
break;
}
default:printf("您输入的功能有误请重新输入\n");
}
}
return 0;
}