数据结构day3(结构体、函数、顺序表、typedef)

头文件

#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;
}

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