数据结构学习笔记——顺序数组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的更多相关文章
- 数据结构学习笔记——顺序数组2
接着昨天的数组操作,数组初始化好了,我们要往里面添加元素,可以在尾部追加或者插入,刚开始数组为空,所以先追加 int AppendList(SqList* pArr, ElemType val) { ...
- ES6中Map数据结构学习笔记
很多东西就是要细细的品读然后做点读书笔记,心理才会踏实- Javascript对象本质上就是键值对的集合(Hash结构),但是键只能是字符串,这有一定的限制. 1234 var d = {}var e ...
- PHP学习笔记之数组篇
摘要:其实PHP中的数组和JavaScript中的数组很相似,就是一系列键值对的集合.... 转载请注明来源:PHP学习笔记之数组篇 一.如何定义数组:在PHP中创建数组主要有两种方式,下面就让我 ...
- JavaScript学习笔记之数组(二)
JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...
- go 学习笔记之数组还是切片都没什么不一样
上篇文章中详细介绍了 Go 的基础语言,指出了 Go 和其他主流的编程语言的差异性,比较侧重于语法细节,相信只要稍加记忆就能轻松从已有的编程语言切换到 Go 语言的编程习惯中,尽管这种切换可能并不是特 ...
- Scala入门学习笔记三--数组使用
前言 本篇主要讲Scala的Array.BufferArray.List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若长度可能有 变化则使用ArrayBuffer 提 ...
- JavaScript学习笔记:数组reduce()和reduceRight()方法
很多时候需要累加数组项的得到一个值(比如说求和).如果你碰到一个类似的问题,你想到的方法是什么呢?会不会和我一样,想到的就是使用for或while循环,对数组进行迭代,依次将他们的值加起来.比如: v ...
- [Golang学习笔记] 07 数组和切片
01-06回顾: Go语言开发环境配置, 常用源码文件写法, 程序实体(尤其是变量)及其相关各种概念和编程技巧: 类型推断,变量重声明,可重名变量,类型推断,类型转换,别名类型和潜在类型 数组: 数组 ...
- [学习笔记]JS 数组Array push相关问题
前言: 今天用写了一个二维数组,都赋值为零,然后更新其中一个值,结果和预期是不一样,会整列的相同位置都是同一个值. 1.用Chrome的控制台样例如下: arrs[2][2] =1的赋值,竟然是三个数 ...
随机推荐
- SCP-Py-002
项目编号:Py-002 项目等级:EuclidKeter 特殊收容措施: Py-002-1目前被映射在Researcher Kevin的服务器位于Site-Pyproject地下防无线电渗透室且被切断 ...
- CDN技术之--流媒体CDN系统的组成
流媒体业务是一种对实时性.连续性.时序性要求非常高的业务,无论从带宽消耗上还是质量保障上来说,对best-effort的IP网络都是一个不小的冲击 –高带宽要求–高QoS要求–组播.广播要求(目前IP ...
- iOS 完全复制UIView
如果要完全复制一个UIView和对象的时候可以使用对象序列化方法 // Duplicate UIView - (UIView*)duplicate:(UIView*)view { NSData * t ...
- 国内网络安装ubuntu软件慢的解决方法
以安装scikit-image为例: pip3 install scikit-image==0.13.0 -i https://pypi.tuna.tsinghua.edu.cn/simple 或者 ...
- HTML5: HTML5 表单元素
ylbtech-HTML5: HTML5 表单元素 1.返回顶部 1. HTML5 表单元素 HTML5 新的表单元素 HTML5 有以下新的表单元素: <datalist> <ke ...
- python字符串比较大小
zfill函数 xs = ['] print (sorted(xs))
- UCML 原生Android中嵌入Cordova Webview
Android实现在当前进程打开网页可以将Cordova中的WebView嵌入Android项目中,实现简单,不需要自己实现,所以掌握如何嵌入WebView对项目快速开发很有帮助 官方也有这方面的教程 ...
- Java不可变对象
在创建状态后无法更改其状态的对象称为不可变对象.一个对象不可变的类称为不可变类.不变的对象可以由程序的不同区域共享而不用担心其状态改变. 不可变对象本质上是线程安全的. 示例 以下代码创建了不可变类的 ...
- java8 Date LocalDate LocaDateTime 互相转化
java 8中 java.util.Date 类新增了两个方法,分别是from(Instant instant)和toInstant()方法 // Obtains an instance of Dat ...
- JPA派生标识符2
@Entity@Table(name = "adam_importfile")@IdClass(BusinessAdviserFileId.class)public class B ...