#ifndef __SEQLIST_H__
#define __SEQLIST_H__
#include
#include
#include
#define MAX 40
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_show(seqlistPtr S);
//任意位置插入元素
int list_insert_pos(seqlistPtr S, int pos, datatype e);
//任意位置删除元素
//按位置进行修改
//按值进行修改
//查找元素指定位置元素的
//按值进行查找元素
int list_search_value(seqlistPtr S, datatype e);
//将顺序表排序,选择排序
void list_sort(seqlistPtr S, int flag);
//顺序表去重
//扩容
//求最值操作
void datatype_list_mvalue(seqlistPtr S, int flag);
//顺序表反转
void list_reverse(seqlistPtr S);
//释放顺序表
#endif
#ifndef __SEQLIST_H__
#define __SEQLIST_H__
#include
#include
#include
#define MAX 40
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_show(seqlistPtr S);
//任意位置插入元素
int list_insert_pos(seqlistPtr S, int pos, datatype e);
//任意位置删除元素
//按位置进行修改
//按值进行修改
//查找元素指定位置元素的
//按值进行查找元素
int list_search_value(seqlistPtr S, datatype e);
//将顺序表排序,选择排序
void list_sort(seqlistPtr S, int flag);
//顺序表去重
//扩容
//求最值操作
void datatype_list_mvalue(seqlistPtr S, int flag);
//顺序表反转
void list_reverse(seqlistPtr S);
//释放顺序表
#endif
ubuntu@ubuntu:0803$ cat seqlist.c
#include "seqlist.h"
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 0;
}
return S->len == MAX;
}
//判空
int list_empty(seqlistPtr S)
{
if(NULL == S)
{
printf("所给顺序表不合法\n");
return 0;
}
return S->len == MAX;
}
//向顺序表中添加元素
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_show(seqlistPtr S)
{
if(NULL==S || list_empty(S))
{
printf("遍历失败\n");
return;
}
printf("当前数据表的元素为:");
for(int i=0; ilen; i++){
printf("%d\t",S->data[i]);
}
printf("\n");
}
int list_insert_pos(seqlistPtr S, int pos, datatype e)
{
if(NULL==S || list_full(S) || pos<0 || pos>S->len)
{
printf("插入失败\n");
return 0;
}
for(int i=S->len-1; i>pos; i--)
{
S->data[i+1] = S->data[i];
}
S->data[pos] = e;
S->len++;
printf("插入成功\n");
return 1;
}
int list_search_value(seqlistPtr S, datatype e)
{
if(NULL==S || list_empty(S))
{
printf("查找失败,顺序表为空");
return -1;
}
for(int i=0 ; ilen ; i++){
if(e==S->data[i])
{
return i;
}
}
}
void list_sort(seqlistPtr S, int flag)
{
if(NULL==S || list_empty(S))
{
printf("排序失败,顺序表为空");
return;
}
for(int i=0 ; ilen-1 ; i++){
int min=i;
for(int j=i+1 ; jlen ; j++){
if(S->data[min] > S->data[j]){
min=j;
}
}
if(min!=i){
S->data[i]^=S->data[min];
S->data[min]^=S->data[i];
S->data[i]^=S->data[min];
}
}
printf("顺序表排序:");
for(int i=0 ; ilen ; i++){
printf("%d\t",S->data[i]);
}
putchar(10);
}
void datatype_list_mvalue(seqlistPtr S, int flag)
{
if(NULL==S || list_empty(S))
{
printf("顺序表为空");
return;
}
int max=S->data[0];
int min=S->data[0];
for(int i=0 ; ilen ; i++){
if(max < S->data[i]){
max=S->data[i];
}
else if(min > S->data[i]){
min=S->data[i];
}
}
printf("max=%d\nmin=%d\n",max,min);
}
void list_reverse(seqlistPtr S)
{
if(NULL==S || list_empty(S))
{
printf("顺序表为空");
return;
}
for(int i=0 ; ilen/2 ;i++){
datatype temp=S->data[i];
S->data[i]=S->data[S->len-1-i];
S->data[S->len-1-i]=temp;
}
printf("顺序表反转");
for(int i=0 ; ilen ; i++){
printf("%d\t",S->data[i]);
}
putchar(10);
}
#include "seqlist.h"
int main(int argc, const char *argv[])
{
seqlistPtr S = list_create();
if(NULL==S)
{
return -1;
}
list_add(S,3);
list_add(S,8);
list_add(S,5);
list_add(S,4);
list_show(S);
list_insert_pos(S, 4, 100);
list_show(S);
printf("元素的位置为:");
printf("%d\n",list_search_value(S, 5));
list_sort(S,1);
datatype_list_mvalue(S,1);
list_reverse(S);
return 0;
}