seqList.h
#ifndef __SEQLIST__H
#define __SEQLIST__H
#define MAX 20
typedef int datatype;
typedef struct
{
datatype data[MAX]; //存储顺序表数组
int len; //表示顺序表长度
}seqList;
//创建顺序表
seqList* listCreate();
//判空,空返回1
int listEmpty(seqList *s);
//判满,满返回1
int listFull(seqList *s);
//添加一个数据
//按照位置进行查找,成功后返回查找到的数据元素
datatype listSearchPos(seqList *s, int pos);
//按照值进行修改
int listUpdateValue(seqList *s, datatype old_e, datatype new_e);
//选择排序
void listRank(seqList *s);
#endif
seqList.c
#include"seqList.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//创建顺序表
seqList* listCreate()
{
seqList *S = (seqList*)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 listEmpty(seqList *S)
{
if(NULL==S)
{
printf("所给顺序表不合法\n");
exit(0);
}
return S->len==0? 1 : 0;//0表示非空,1表示空
}
//按照值进行修改数组数据
int listUpdateValue(seqList *s, datatype old_e, datatype new_e)
{
for(int i=0;i<s->len;i++)
{
if(old_e==s->data[i])
{
s->data[i]=new_e;
printf("修改成功");
return 1;
}
}
printf("修改失败");
return 0;
}
//按照位置进行查找,成功后返回查找到的数据元素
datatype listSearchPos(seqList *s, int pos)
{
if( pos<0 || pos>s->len-1 || listEmpty(s))//逻辑判断
{
printf("查找失败\n");
return NULL;
}
printf("按位置查找成功\n");
return s->data[pos];//返回数据
}
//选择排序 降序
void listRank(seqList *s)
{
for(int i=0;i<s->len-1;i++)
{
int index=i;
for(int j=i+1;j<s->len;j++)
{
if(s->data[index]<s->data[j])
{
index=j;
}
}
if(index!=i)
{
int tem=s->data[index];
s->data[index]=s->data[i];
s->data[i]=tem;
}
}
}
//添加一个数据
int listAdd(seqList *S, datatype e)
{
if(listFull(S))
{
printf("表满,添加失败\n");
return -1;
}
//添加逻辑
S->data[S->len] = e;
S->len ++;
printf("添加成功\n");
return 0;
}
main.c
#include"seqList.h"
#include<stdio.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
seqList *S = listCreate();
if(NULL==S)
{
return -1;
}
//调用添加函数
listAdd(S,7);`
listAdd(S,5);
listAdd(S,5);
listAdd(S,5);
listAdd(S,8);
listAdd(S,9);
listAdd(S,0);
listshow(S);
printf("按位置查找测试\n");
printf("%d\n",listSearchPos(S,6));
printf("按照值进行修改\n");
listUpdateValue(S,8,6);
listshow(S);
printf("选择排序降序测试\n");
listRank(S);
listshow(S);
return 0;
}
result
ubuntu@ubuntu:01_day$ ./a.out
创建成功
添加成功
添加成功
添加成功
添加成功
添加成功
添加成功
添加成功
输出数组内容为:
7 5 5 5 8 9 0
按位置查找测试
按位置查找成功
0
按照值进行修改
修改成功输出数组内容为:
7 5 5 5 6 9 0
选择排序降序测试输出数组内容为:
9 7 6 5 5 5 0