- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数 组 杂 谈
陈 朝 晖
定义:有限个同类型数据元素的序列为数组。
是顺序存储结构的线性表中的一种。
什么是线性表?
线性表是最常用且比较简单的一种数据结构,它是由有限个数据元素组成的有序集合,每个数据元素有一个数据项或者含多个数据项。
线性表具有的结构特征:
均匀性:
即同一线性表的各数据元素的数据类型一致且数据项数相同。
有序性:
表中数据元素之间的相对位置是线性的,即存在惟一的“第一个”和“最后一个”数据元素。
除第一个和最后一个外,其它元素前面均只有一个数据元素(直接前趋),后面也均只有一个数据元素(直接后继)。
结构方式:
(数组、指针)
逻辑存储结构
物理存储结构
数据元素的存储方式:
分为顺序存储结构和链式存储结构两类线性表。
顺序存储结构
是指用一组地址连续的存贮单元依次存储线性表的元素,通常用数组实现;而在链式存储结构的线性表中,逻辑上相邻的两元素,其物理位置不要求相邻,其实现既可采用静态数组,亦可采用动态指针。
数组的物理实现是一块连续的存储空间,它是接首址+位移来访问每一个元素的。
在数组中,数据元素的下标间接反映了数据元素的存储地址。而计算机内在是随机存取的装置,所以在数组中存取一个数据元素只要通过下标计算它的存储地址就行了,数组中任意一个元素的存取时间都相等。
一维数组
1、定义:
var
a:array [1..10] of integer;
其中:a是这一批数据的名称,称为数组名;array、of是定义数组的保留字;中括号中的数字是数据编号的下限和上限,同时也说明了数据的个数(上限-下限);最后一个是数据的基类型,如integer,char,real,boolean。
2、数组元素的输入:
数组名代表的并不是一个变量,而是一批变量,因而,不能直接整个数组读入,而是要逐个数组元素读入,通常用循环结构来完成这一功能。下面是几个常用输入数组元素的例子:
for i:=1 to 10 do read(a[i]);
{从键盘读入数组元素的值;最常用的方法}
for i:=1 to 10 do a[i]:=i;
{数组元素a[1]到a[10]的值分别为1到10;数据赋初值}
for i:=1 to 10 do a[i]:=0;
{数组元素清0;最常用的数据初始化的方法}
for i:=1 to 10 do a[i]:=random(100);
{随机产生10个100以内的数,赋给各数组元素}
3、数组元素的输出:
和数组元素的输入相同,数组元素的输出也不能由一个write语句直接完成。同样要逐个数组元素输出。通常也用循环结构来完成这一功能:
for i:=1 to 10 do write(a[i], );{数组元素之间用空格分隔}
writeln;
4、数组的应用:
例1:从键盘输入10个数,将这10个数逆序输入,并求这10个数的和,输出这个和。
program p1;
var
a:array [1..10] of integer;
i,s:integer;
begin
for i:=1 to 10 do read(a[i]);
for i:=10 downto 1 do write(a[i], );
writeln;
s:=0;
for i:=1 to 10 do s:=s+a[i];
writeln(s=,s);
end.
例2:用筛法求100以内的素数(质数)。
分析:
素数是除了1和它本身以外没有其它约数的数。用筛法求素数的方法是:用质数筛去合数:从第一个素数2开始,把它的倍数去掉;这样2以后的第一个非0数就一定也是素数,把它的倍数也删了……重复这个删数过程,直到在所找到的素数后再也找不到一个非0数。把所有非0数输出。
program p2;
var
a:array [1..100] of integer;
i,j,k:integer;
begin
for i:=1 to 100 do a[i]:=i;
a[1]:=0;i:=2;
while i=100 do
begin
k:=i;
while k=100 do
begin
k:=k+i;
a[k]:=0;
end; {上面将所有a[i]的倍数清0}
i:=i+1;
while a[i]=0 do i:=i+1; {查找接下来的第一个非0数}
end;
for i:=1 to 100 do if a[i]0 then write(a[i], );
end
您可能关注的文档
最近下载
- 新纲要云南省实验教材小学三年级信息技术第一册教学计划汇编.pdf VIP
- 施罗德管道爬行机器人D100中文文版说明书.pdf VIP
- SHT3007-2014 石油化工储运系统罐区设计规范.pdf VIP
- 浅谈经编涤纶超柔短毛绒生产工艺.pdf VIP
- 教科版物理八年级上册第四章 在光的世界里 大单元整体学历案教案 教学设计附作业设计(基于新课标教学评一致性).docx VIP
- 感染性手术管理规范.pdf VIP
- 多摩川编码器说明书多摩川编码器说明书.pdf VIP
- 《运动生理学》第10章有氧、无氧工作能力1.ppt
- 《网络营销(第2版)》课件项目四 网上渠道:网站和网店营销.pptx VIP
- (1.2.5)--7.5-应急放油系统.ppt VIP
文档评论(0)