头文件
#ifndef __HEAD_H__
#define __HEAD_H__
#include
#include
#include
enum A
{
FALSE=-1,
SUCCESS
};
//定义现行长度
#define MAXSIZE 12
//方便修改数据类型
typedef int datatype;
//定义顺序表的结构体
typedef struct list
{
//数据元素
datatype data[MAXSIZE];
//顺序表长度
int len;
}sqlist;
//sqlist定义别名 struct list
sqlist* create_list();
int full(sqlist*list);
int inset_rear(sqlist *list,datatype element);
int Output(sqlist *list);
int delete_rear(sqlist *list);
void search_index(sqlist* list,int index);
int update_index(sqlist *list,int index,datatype element);
int inset_index(sqlist*list,int index,datatype element);
int delete_index(sqlist*list,int index);
int search_data(sqlist *list,datatype key);//datatype 在头文件中定义为了int型
int update_data(sqlist *list,datatype key,datatype element);
int delete_data(sqlist *list,datatype key);
void deduplication(sqlist *list);
void bubble(sqlist *list);
sqlist *free_space(sqlist *list);
#endif
主函数
#include "head.h"
int main(int argc, const char *argv[])
{
sqlist* list=create_list();
int n;
printf("please enter n:");
scanf("%d",&n);
datatype element;
for(int i=0;i
函数
#include "head.h"
/*顺序表堆区申请内存
*/
sqlist* create_list()
{
sqlist *list=(sqlist*)malloc(sizeof(sqlist));
if(NULL ==list)
return NULL;
//创建成功
//对数据元素初始化
memset(list->data,0,sizeof(list->data));
//对顺序表长度初始化
list->len=0;
return list;
}
/*判断满
*/
int full(sqlist*list)
{
return list->len==MAXSIZE?FALSE:SUCCESS;
}
/*尾插入
*
* @parm[out]顺序表,值
*/
int inset_rear(sqlist *list,datatype element)
{
//1,判断顺序表是否创建NULL==list
//2,判断顺序表是否为满len==MAXSIZE
if(NULL==list || full(list))
{
return FALSE;
}
list->data[list->len]=element;
list->len++;
return SUCCESS;
}
/*
* 判断是否为空
*/
int empty(sqlist *list)
{
return list->len==0?FALSE:SUCCESS;
}
/*
* 循环输出
*@parm 顺序表
*/
int Output(sqlist *list)
{
//1,判断顺序表是否为空
//2,判断顺序表是否创建
if( NULL == list || empty(list))
return FALSE;
//3,循环输出
for(int i=0;ilen;i++)
{
printf("%d\t",list->data[i]);
}
puts("");
return SUCCESS;
}
/*
* 尾删
* @parm out 顺序表
*/
int delete_rear(sqlist*list)
{
//1,判断顺序表是否创建
//2,判断顺序表是否为空
if(NULL ==list || empty(list))
return FALSE;
//3,删除
list->len--;
return SUCCESS;
}
/*
* 按下表查找
* @parm 顺序表,index
*/
void search_index(sqlist* list,int index)
{
//1,判断顺序表是否创建
//2,判断顺序表是否为空
//3,判断下表是否合法
if(NULL==list || empty(list) || index<0 || index >= list->len)
return;
//4,查找
printf("search by index element is %d\n",list->data[index]);
}
int update_index(sqlist *list,int index,datatype element)
{
//1,判断顺序表是否创建
//2,判断顺序表是否为空
//3,判断下表是否合法
if(NULL==list || empty(list) || index<0 || index >= list->len)
return FALSE;
list->data[index]=element;
return SUCCESS;
}
int inset_index(sqlist*list,int index,datatype element)
{
//1,判断顺序表是否创建
//2,判断顺序表是否为空
//3,判断下表是否合法
if(NULL==list || empty(list) || index<0 || index >= list->len)
return FALSE;
for(int i=list->len-1;i>=index;i--)
{
list->data[i+1]=list->data[i];
}
list->data[index]=element;
list->len++;
return SUCCESS;
}
int delete_index(sqlist*list,int index)
{
//1,判断顺序表是否创建
//2,判断顺序表是否为空
//3,判断下表是否合法
if(NULL==list || empty(list) || index<0 || index >= list->len)
return FALSE;
for(int i=index;ilen-1;i++)
{
list->data[i]=list->data[i+1];
}
list->len--;
}
/*
* function: 按元素查找
* @param [ in]
* @param [out]
* @return
*/
int search_data(sqlist *list,datatype key)//datatype 在头文件中定义为了int型
{
//1,判断顺序表是否创建
//2,判断顺序表是否为空
if(NULL ==list || empty(list))
return FALSE;
for(int i=0;ilen;i++)
{
if(key==list->data[i])
{
return i;
}
}
return FALSE;
}
/*
* function: 按元素修改
* @param [ in]
* @param [out]
* @return
*/
int update_data(sqlist *list,datatype key,datatype element)
{
int index=search_data(list,key);
if(index==-1)
{
return FALSE;
}
update_index(list,index,element);
return SUCCESS;
}
/*
* function: 按元素删除
* @param [ in]
* @param [out]
* @return
*/
int delete_data(sqlist *list,datatype key)
{
int index=search_data(list,key);
if(index==-1)
{
return FALSE;
}
delete_index(list,index);
return SUCCESS;
}
/*
* function: 去重
* @param [ in]
* @param [out]
* @return
*/
void deduplication(sqlist *list)
{
for(int i=0;ilen-1;i++)
{
for(int j=i+1;jlen;j++)
{
if(list->data[i]==list->data[j])
{
delete_index(list,j);
j--;
}
}
}
}
/*
* function: 排序
* @param [ in]
* @param [out]
* @return
*/
void bubble(sqlist *list)
{
for(int i=0;ilen-1;i++)
{
for(int j=0;jlen-1-i;j++)
{
if(list->data[j]data[j+1])
{
datatype t=list->data[j];
list->data[j]=list->data[j+1];
list->data[j+1]=t;
}
}
}
}
/*
* function: 释放
* @param [ in]
* @param [out]
* @return
*/
sqlist *free_space(sqlist *list)
{
if(NULL==list)
{
return NULL;
}
free(list);
list=NULL;
return list;
}