18.8.2 顺序表

#枚举
:将变量的值———列举出来,变量的值只限于列举出来的值的范围内。

***************************数据结构*******************************
注:主要说明 线性结构

#线性表包含顺序表(连续)和链表(不连续)
线性表特点:1.直接前驱, 2.直接后继。

#顺序表
即线性表的顺序结构。


#线性结构
1.顺序结构 是连续的
2.链式存储 是不连续的

*********************************************************************
*顺序表*
1.长度 (是整形)
2.地址

长度: 0 
容量: 5
//长度不可能超过容量

顺序表 代码:

1.头文件

#ifndef _Sequencelist_h
#define _Sequncelist_h
#define SIZE 10 //
#define SUCCESS 10000
#define FAILURE 10001
#define TRUE    10002
#define FALSE   10003

typedef int ElemType;

struct Sequencelist
{
	int length;
	ElemType *data;
};

typedef struct Sequencelist Selist;

int SequenceInit(Selist *l);

int SequenceInsrt(Selist *l,int a,ElemType b);

int Sequencelength(Selist l);

int Sequenceempty(Selist l);

int SequenceGetElem(Selist l,int p,ElemType *e);

int SequenceTraverse(Selist l,void(*p)(ElemType));

//int SequenceSearch(Selist l);

int LocateElem(Selist l,ElemType e);

int SequenceDelete(Selist *l,int p,ElemType *e);

int	Sequenceclear(Selist *l);

int SequenceDestory(Selist *l);

#endif

2.功能函数

#include<stdio.h>
#include"Sequencelist.h"
#include<stdlib.h>

int SequenceInit(Selist *l)
{
	if( NULL == l)
	{
		return FAILURE;
	}
	l ->length = 0;
	l ->data = (ElemType* )malloc(sizeof(ElemType)*SIZE);
return SUCCESS;
}

int SequenceInsrt(Selist *l,int a,ElemType b)
{
	int i;
	if( NULL == l || a < 1 || l->length >= SIZE || a > l->length + 1)
	{
		return FAILURE;
	}
	else 
	{
		for( i = 0; i < l->length +1 - a;i++)
		{
			l -> data[l -> length -a] = l -> data[l ->length -a -1];
		}
		l -> data[a] = b;
		l -> length++; 
	return SUCCESS;
		}
}

int Sequencelength(Selist l)
{
	return l.length;
}

int Sequenceempty(Selist l)
{
	return(l.length == 0)? TRUE:FALSE;
}

int SequenceGetElem(Selist l,int p,ElemType *e)
{
	if( p < 1 || p > l.length )
	{
		return FAILURE;
	}
	*e = l.data[p -1];
	return SUCCESS;
}

int SequenceTraverse(Selist l,void(*p)(ElemType))
{
	int i;
	if( NULL == p)
	{
		return FAILURE;
	}
	else
	{
		for( i = 0 ;i < l.length;i++)
		{
			p(l.data[i]);
		}
		return SUCCESS;
	}
}
#if 0
int SequenceSearch(Selist l)
{
	int a;
	ElemType b;
	printf("plz input a number\n");
	scanf("%d",&b);
	for( a = 0; a < l.length;a++)
	{
		if ( b == l.data[a])
		{
			printf("have been fond!\n");
			printf("is a %dth number :%d",a+1,l.data[a]);
			return SUCCESS;
		}
	}
	return FAILURE;
}
#endif
int LocateElem(Selist l,ElemType e)
{
	int i;
	for( i = 0 ;i <l.length ;i ++)
	{
		if( e == l.data[i])
		{
			return i+1;
		}
	}
return FAILURE;
}

int SequenceDelete(Selist *l,int p,ElemType *e)
{
	int i;
	*e = l->data[p -1];
	if(NULL == l)
	{
		return FAILURE;
	}
	if( p < 1 || p > l->length)
	{
		return FAILURE;
	}
	for( i = 0; i < l->length;i++)
	{
		l->data[p + i -1] = l->data[p + i];
		l->length--;
	}
	return SUCCESS;
}

int Sequenceclear(Selist *l)
{
	if( NULL == l)
	{
		return FAILURE;
	}
	l->length = 0;
	return SUCCESS;
}

int SequenceDestory(Selist *l)
{
	if( NULL == l)
	{
		return FAILURE;
	}
	l->length = 0;
	free(l -> data);
	l->data = NULL;
	return SUCCESS;
}

3.主函数

#include<stdio.h>
#include"Sequencelist.h"
#include<stdlib.h>
#include<time.h>

void print(ElemType e)
{
	printf("%d ",e);
}

int main()
{
	int ret,i;
	Selist list;
	srand(time(NULL));
	
	ret = SequenceInit(&list);
	if( SUCCESS == ret)
	{
		printf("Init Success!\n");
	}
	for( i = 0 ;i < 5;i++)
	{
		ret = SequenceInsrt(&list,i+1,rand()%10);
		if ( ret == SUCCESS)
		{
			printf("SUCCESS\n");
		}
		else
		{
			printf("FAILURE\n");
		}
	}

	ret = Sequencelength(list);
	printf("length is %d\n",ret);

	ret = Sequenceempty(list);
	{
		if( ret == TRUE)
		{
			printf("is empty\n");
		}
		else if( ret == FALSE)
		{
			printf("is not empty\n");
		}
	}
	
	int p = 1;
	ElemType e;
	ret = SequenceGetElem(list,p,&e);
	{
		if( ret == FAILURE)
		{
			printf("GetElem failure!\n");
		}
		else 
		{
			printf("%dth elem is %d\n",p,e);
		}
	}

	ret = SequenceTraverse(list,print);
	{
		if ( ret == FAILURE)
		{
			printf("Traverse faliure!\n");
		}
		else if(ret == SUCCESS)
		{
			printf("Traverse success!\n");
		}
	}
#if 0
	ret = SequenceSearch(list);
	{
		if( ret == FAILURE)
		{
			printf("not fond!\n");
		}
		if( ret == SUCCESS)
		{
			printf("\n");
		}
	}
#endif
	ret = LocateElem(list,p);
		if( ret == FAILURE)
		{
			printf(" not exist!\n");
		}
		else
		{
			printf(" the number %d is the %dth\n ",p,ret);
		}

	int x = 3;
	ret = SequenceDelete(&list,x,&e);
	if( ret == SUCCESS)
	{
		printf(" delete success!\n");
	}
	else
		printf(" delete failure!\n");

	ret = Sequenceclear(&list);
	if( SUCCESS == ret)
	{
		printf(" clear success!\n");
	}
	else
	{
		printf(" clear failure!\n");
	}

	ret = SequenceDestory(&list);
	if( SUCCESS == ret)
	{
		printf(" Destory success!\n");
	}
	else
	{
		printf(" Destory failure!\n");
	}
return 0;
}

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值