Day3 数据结构

目录

1、第一题

2、思维导图


1、第一题

#ifndef _SEQLIST_H_
#define _SEQLIST_H_


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

//顺序表去重


//释放顺序表

//求最值操作
datatype list_mvalue(seqListPtr S,int flat);

//顺序表反转
void list_reverse(seqListPtr S);

#endif
#include"1test.h"
#include 
#include 
#include 


//创建顺序表
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 ==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_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 0;
}

int list_search_value(seqListPtr S,datatype e)
{
	if(NULL==S)
	{
		printf("查找个der");
		return 0;
	}
	for(int i=0;ilen;i++)
	{
		if(e==S->data[i])
		{
			printf("data[%d]=%d\n",i,e);
		}
	}	
}

void list_sort(seqListPtr S,int flag)
{
	int j;
	for(int i=1;ilen;i++)
	{
		int a=0;
		for(j=1;jlen-i;j++)
		{
			if(flag==1)
			{
				if(S->data[a]data[j])
				{
					a=j;
				}
			}
			if(flag==0)
			{
				if(S->data[a]>S->data[j])
				{
					a=j;
				}
			}
		}
		datatype temp;
		temp=S->data[a];
		S->data[a]=S->data[j];
		S->data[j]=temp;
	}
	printf("排序成功\n");
}

datatype list_mvalue(seqListPtr S,int flat)
{
	int a;
	for(int i=0;ilen-1;i++)
	{
		if(flat==1)
		{
			if(S->data[i]>S->data[a])
			{
				a=i;
			}
	printf("最大值的下标为%d结果是%d\t",a,S->data[a]);
		}
		if(flat==0)
		{
			if(S->data[i]data[a])
			{
				a=i;
			}
		}
	printf("最小值的下标为%d结果是%d\t\n",a,S->data[a]);
	}
	return 0;
}

void list_reverse(seqListPtr S)
{
	datatype temp;
	for(int i=0;i<(S->len/2);i++)
	{
		temp=S->data[i];
		S->data[i]=S->data[S->len-1-i];
		S->data[S->len-i-1]=temp;
	}
	printf("排序完成\n");
}

#include"1test.h"
#include

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,2);
	list_add(S,4);

	list_show(S);
	
	list_insert_pos(S,1,100);
	list_show(S);

	list_search_value(S,2);
	
	list_sort(S,0);
	list_show(S);

	list_mvalue(S,0);

	list_reverse(S);
	list_show(S);

	return 0;
}

2、思维导图

 

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