#include <stdio.h>
#include "fun.h"
int main(int argc, const char *argv[])
{
return 0;
}
#include "fun.h"
seq seq_create()
{
seq P=NULL;
P=(seq)malloc(sizeof(seqlist));
if(P==NULL)
{
printf("内存申请失败\n");
return NULL;
}
else
{
printf("内存申请成功\n");
}
P->len=0;
memset(P->data,0,sizeof(P->data));
return P;
}
int seq_instert(seq P, int in_data)
{
if(P==NULL)
{
printf("入参为空");
return -1;
}
if(P->len==MAX)
{
printf("表已满\n");
return -2;
}
P->data[P->len]=in_data;
P->len++;
return 0;
}
int print_seq(seq P)
{
if(P==NULL)
{
printf("入参为空");
return -1;
}
for(int i=0;i<P->len;i++)
{
printf("%d\n",P->data[i]);
}
}
int seq_full(seq P)
{
if(P==NULL)
{
printf("入参为空");
return -1;
}
return P->len==MAX?1:0;
}
int seq_empty(seq P)
{
if(P==NULL)
{
printf("入参为空");
return -1;
}
return P->len==0?1:0;
}
int seq_instert_a(seq P,int a,int in_data)
{
if(P==NULL)
{
printf("入参为空");
return -1;
}
if(P->len==MAX||a>P->len+1)
{
printf("表已满\n");
return -2;
}
for( int i=P->len-1;i>=a-1;i--)
{
P->data[i+1]=P->data[i];
}
P->data[a-1]=in_data;
P->len++;
return 0;
}
int seq_del_a(seq P,int a)//按位置删除
{
if(P==NULL)
{
printf("入参为空");
return -1;
}
for(int i=a-1;i<P->len;i++)
{
P->data[i]=P->data[i+1];
}
P->len--;
return 0;
}
int seq_del_b(seq P,int in_data)//按值删除
{
if(P==NULL)
{
printf("入参为空");
return -1;
}
while(1)
{
int i;
for( i=0;i<P->len;i++)
{
if(P->data[i]==in_data)
{
seq_del_a(P,i+1);
break;
}
}
if(i==P->len)
{
return 0;
}
}
}
int seq_find_b(seq P,int in_data)//按值查找
{
if(P==NULL)
{
printf("入参为空");
return -1;
}
int k=0;
for(int i=0;i<P->len;i++)
{
if(P->data[i]==in_data)
{
printf("%d",i);
k++;
}
}
if(k==0)
{
printf("没有找到\n");
}
return 0;
}
//按位置修改
int seq_updata_a(seq P,int a,int in_data)
{
if(P==NULL)
{
printf("入参为空");
return -1;
}
if(a>P->len||a<=0)
{
printf("位置不合理\n");
return -2;
}
P->data[a-1]=in_data;
return 0;
}
//按值修改
int seq_updata_b(seq P,int in_data,int in_data1)
{
if(P==NULL)
{
printf("入参为空");
return -1;
}
while(1)
{
int i;
for( i=0;i<P->len;i++)
{
if(P->data[i]==in_data)
{
seq_updata_a(P,i+1,in_data1);
break;
}
}
if(i==P->len)
{
return 0;
}
}
}
int seq_sort(seq P)//选择排序降序
{
if(P==NULL)
{
printf("入参为空");
return -1;
}
int i,j,index,temp;
for(i=1;i<P->len;i++)
{
index=i-1;
for(j=i-1;j<P->len;j++)
{
if(P->data[index]<P->data[j])
{
index=j;
}
}
if(index!=i-1)
{
temp=P->data[index];
P->data[index]=P->data[i-1];
P->data[i-1]=temp;
}
}
}
int seq_sort1(seq P)//冒泡排序升序
{
if(P==NULL)
{
printf("入参为空");
return -1;
}
int i,j,temp;
for(i=1;i<P->len;i++)
{
for(j=0;j<P->len-i;j++)
{
if(P->data[j+1]<P->data[j])
{
temp=P->data[j];
P->data[j]=P->data[j+1];
P->data[j+1]=temp;
}
}
}
}
//去重
int seq_delsame(seq P)
{
if(P==NULL)
{
printf("入参为空");
return -1;
}
for(int i=0;i<P->len;i++)
{
for(int j=i+1;j<P->len;j++)
{
if(P->data[i]==P->data[j])
{
for(int k=j;k<P->len-1;k++)
{
P->data[k]=P->data[k+1];
}
P->len--;
j--;
}
}
}
}
#ifndef __FUN_H__
#define __FUN_H__
#define MAX 10
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct
{
int data[MAX];
int len;
}seqlist ,*seq;
seq seq_create();//创建
int seq_instert(seq P,int in_data);//插入
int print_seq(seq P);//打印
int seq_empty(seq P);//判空
int seq_full(seq P);//判满
int seq_instert_a(seq P,int a,int in_data);//按位置插入
int seq_del_a(seq P,int a);//按位置删除
int seq_del_b(seq P,int in_data);//按值删除
int seq_updata_a(seq P,int a,int in_data);//按位置修改
int seq_updata_b(seq P,int in_data,int in_data1);//按值修改
int seq_sort(seq P);//选择排序降序
int seq_sort1(seq P);//冒泡排序升序
int seq_delsame(seq P);//去重
#endif