//按值进行查找元素
int list_search_value(seqlist_ptr S ,datatype e)
{
//判断逻辑
if(S==NULL||list_empty(S))
{
printf("按值查找失败!\n");
return -1;
}
//遍历顺序表
for(int i=0;i<S->len;i++)
{
if(S->data[i] == e)
{
printf("%d在该顺序",e);
}
}
return 0;
}
//将顺序表排序
void list_sort(seqlist_ptr S, int flag)
{
//判断逻辑
if(S==NULL ||list_empty(S))
{
printf("排序失败\n");
}
int temp=0;
//判断标志位是降序还是升序
if(flag==0)
{
//开始降序排列
for(int i=1;i<S->len;i++)
{
for(int j=0;j<S->len-i;j++)
{
if(S->data[j]<S->data[j+1])
{
temp=S->data[j];
S->data[j]=S->data[j+1];
S->data[j+1]=temp;
}
}
}
printf("降序:");
for(int i=0;i<S->len;i++)
{
printf("%d\t",S->data[i]);
}
printf("\n");
}
//开始升序
else if(flag == 1)
{
for(int i=1;i<S->len;i++)
{
for(int j=0;j<S->len-i;j++)
{
if(S->data[j]>S->data[j+1])
{
temp=S->data[j];
S->data[j]=S->data[j+1];
S->data[j+1]=temp;
}
}
}
printf("升序:");
for(int i=0;i<S->len;i++)
{
printf("%d\t",S->data[i]);
}
printf("\n");
}
}
//顺序表反转
void list_reverse(seqlist_ptr S)
{
//判断逻辑
if(S==NULL||list_empty(S))
{
printf("不能反转,顺序表有错\n");
}
int temp=0; //定义一个临时值
//开始反转
for(int i=0;i<(S->len)/2;i++)
{
temp=S->data[i];
S->data[i]=S->data[S->len-i-1];
S->data[S->len-i-1]=temp;
}
//输出反转
printf("反转后的值是:");
for(int i=0;i<(S->len);i++)
{
printf("%d\t",S->data[i]);
}
printf("\n");
}
//求最值操作
datatype list_mvalue(seqlist_ptr S, int flag)
{
//判断逻辑
if(S==NULL)
{
printf("无法求最值,顺序表错误\n");
}
//flag=0 求最小值
int M=S->data[0];
if(flag == 0)
{
for(int i=0;i<S->len;i++)
{
if(S->data[i]<M)
{
M=S->data[i];
}
}
printf("最小值:%d\n",M);
}
//flag=0 求最大值
int Min=S->data[0];
if(flag == 1)
{
for(int i=0;i<S->len;i++)
{
if(S->data[i]>Min)
{
Min=S->data[i];
}
}
printf("最大值:%d\n",Min);
}
}
