day18

头文件

#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;ilen;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;ilen;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;ilen;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;ilen;i++)
    {
        k=i-1;
        for(int j=i-1;jlen;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;ilen;i++)
    {
        k=i-1;
        for(int j=i-1;jlen;j++)
        {
            if(S->data[k]data[j])
            {
                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;ilen;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(S->len-j-1);i++,k--)
    {
        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;
}
结果

day18_第1张图片

day18_第2张图片

 

 

你可能感兴趣的:(数据结构)