头文件
#ifndef _MAIN_C_
#define _MAIN_C_
#define MAX 40
#include
#include
#include
typedef int datatype;
typedef struct
{
datatype data[MAX];
int len;
}seqlist,*seqlistptr;
//创建顺序表
seqlistptr list_create();
//判空
int list_full(seqlistptr S);
//判满
int list_empty(seqlistptr S);
//添加
int list_add(seqlistptr S,datatype e);
//遍历
void list_put(seqlistptr S);
//插入
int list_insert_pos(seqlistptr S,int pos,datatype e);
//删除
int list_del(seqlistptr S,int pos,datatype e);
//修改位置
//修改值
int list_xg(seqlistptr S,int pos,datatype e);
//查找指定位置的元素
//按值查找
int list_search_value(seqlistptr S,datatype e);
//将顺序表排序
void list_sort(seqlistptr S,int flag);
//去重
//求最值
datatype list_mvalue(seqlistptr S);
//顺序表反转
void list_reverse(seqlistptr S);
#endif
函数代码
#include "main.c"
seqlistptr list_create()
{
seqlistptr S = (seqlistptr)malloc(sizeof(seqlist));
if(NULL==S)
{
printf("创建失败\n");
return NULL;
}
memset(S->data,0,sizeof(S->data));
S->len=0;
printf("顺序表创建成功\n");
return S;
}
int list_full(seqlistptr S)
{
if(NULL==S)
{
printf("所给顺序表不合法\n");
return -1;
}
return S->len == MAX;
}
int list_empty(seqlistptr S)
{
if(NULL==S)
{
printf("所给顺序表不合法\n");
return 0;
}
return S->len == 0;
}
int list_add(seqlistptr S,datatype e)
{
if(NULL==S||list_full(S))
{
printf("添加失败\n");
return -1;
}
S->data[S->len] = e;
S->len++;
printf("添加成功\n");
return 1;
}
void list_put(seqlistptr S)
{
if(NULL==S||list_empty(S))
{
printf("遍历失败\n");
return ;
}
printf("当前顺序表的元素分别是:");
for(int i=0;i
{
printf("%d\t",S->data[i]);
}
putchar(10);
}
int list_insert_pos(seqlistptr S,int pos,datatype e)
{
if(NULL==S||list_empty(S)||pos<0||pos>S->len)
{
printf("插入失败\n");
return 0;
}
printf("插入之后的数据:\n");
for(int i=S->len-1;i>=pos;i--)
{
S->data[i+1]=S->data[i];
}
S->data[pos]= e;
S->len++;
}
int list_del(seqlistptr S,int pos,datatype e)
{
if(NULL==S||list_empty(S)||pos<0||pos>S->len)
{
printf("删除失败\n");
return 0;
}
printf("删除之后的:\n");
for(int i=pos;i
{
S->data[i]=S->data[i+1];
}
S->len--;
}
int list_xg(seqlistptr S,int pos,datatype e)
{
if(NULL==S||list_empty(S)||pos<0||pos>S->len)
{
printf("修改失败\n");
return 0;
}
printf("修改之后\n");
S->data[pos]=e;
}
/*************查找*************/
int list_search_value(seqlistptr S,datatype e)
{
if(NULL==S||list_empty(S))
{
printf("查无此数据\n");
return 0;
}
for(int i=0;i
{
if(S->data[i]==e){
printf("第%d个数据是该数据\n",i+1);
}
}
}
/***************排序***************/
void list_sort(seqlistptr S,int flag)
{
if(NULL==S||list_empty(S))
{
printf("无法排序\n");
}
int k=0,temp;
if(flag==0)
{
printf("升序\n");
for(int i=1;i
{
k=i-1;
for(int j=i-1;j
{
if(S->data[k]>S->data[j])
{
k=j;
}
}
if(k!=i-1)
{
temp=S->data[k];
S->data[k]=S->data[i-1];
S->data[i-1]=temp;
}
}
}
if(flag==1)
{
printf("降序\n");
for(int i=1;i
{
k=i-1;
for(int j=i-1;j
{
if(S->data[k]
{
k=j;
}
}
if(k!=i-1)
{
temp=S->data[k];
S->data[k]=S->data[i-1];
S->data[i-1]=temp;
}
}
}
}
/*************求最值*****************/
datatype list_mvalue(seqlistptr S)
{
if(NULL==S||list_empty(S))
{
printf("无法求最值\n");
}
int max=0,min=S->data[0];
for(int i=0;i
{
if(S->data[i]>max)
{
max=S->data[i];
}
if(S->data[i]
min=S->data[i];
}
}
printf("最大值为%d\n",max);
printf("最小值为%d\n",min);
}
/**************反转**********/
void list_reverse(seqlistptr S)
{
if(NULL==S||list_empty(S))
{
printf("无法反转\n");
}
printf("反转之后\n");
int j=S->len/2,temp,k;
for(int i=0,k=S->len-1;i
{
temp=S->data[i];
S->data[i]=S->data[k];
S->data[k]=temp;
}
}
主函数
#include "main.c"
int main(int argc, const char *argv[])
{
seqlistptr S = list_create();
if(NULL ==S)
{
return -1;
}
list_add(S,3);
list_add(S,6);
list_add(S,5);
list_put(S);
list_insert_pos(S,2,4);
list_put(S);
list_del(S,2,4);
list_put(S);
list_xg(S,2,4);
list_put(S);
list_search_value(S,3);
list_sort(S,1);
list_put(S);
list_sort(S,0);
list_put(S);
list_mvalue(S);
list_reverse(S);
list_put(S);
return 0;
}
结果