首页 > 代码库 > 数据结构学习笔记——顺序数组1
数据结构学习笔记——顺序数组1
线性表最简单的刚开始就是顺序存储结构,我是看着郝斌的视频一点一点来的,严蔚敏的书只有算法,没有具体实现,此笔记是具体的实现
为什么数据结构有ADT呢,就是为了满足数据结构的泛性,可以在多种数据类型使用
这里所说的数组并不是简单那种数组,这里所讲的是数组结构,就是在内存中是连续存储的,所以要先构造出一个这样的结构
typedef int ElemType;typedef struct{ ElemType* elem; //数组结构中的数据区,可以是任何数据类型,常见的是结构体类型 int length; //分配数组的长度 int listsize; //数组中实际的长度,实际元素的个数}SqList;
现在这个数组的结构有了,也就是这个数组模型有了,要怎么使用它呢,就是给它分配内存,也就是初始化它
int InitList(SqList *pArr, int len){ //将分配的内存首地址返回,如果分配失败,malloc会返回NULL pArr->elem = (ElemType*)malloc(sizeof(ElemType)*len); if (NULL==pArr->elem) { printf("数组初始化失败!"); exit(-2); } pArr->length = len; //数组的长度 pArr->listsize = 0; //刚开始数组没有实际元素 return 1;}
这样初始化成功,我们还要查看数组才知道到底好了没,或者进行一系列的操作,想要查看数组,还需要查看操作
void ShowList(SqList *pArr){ if (Is_Empty(pArr)) //首先要判断数组是否为空 printf("数组为空!"); else { for (int i = 0; i < pArr->listsize; i++)//不为空循环显示 { //pArr->elem是分配的首地址,相当于初始化指针,然后可以当数组使用 printf("%3d", pArr->elem[i]); } }}int Is_Empty(SqList *pArr){ if (0 == pArr->listsize)//数组当前实际元素为空 return 1; else return 0;}
这样就可以先写个程序验证一下了
int main(){ SqList a; InitList(&a, 5); //自行设置数组总长度为5 ShowList(&a); getchar(); return 0;}
数据结构学习笔记——顺序数组1
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。