数据的顺序存储与组织广东教育出版社严灿洪22数据的顺序存储与组织课件_第1页
数据的顺序存储与组织广东教育出版社严灿洪22数据的顺序存储与组织课件_第2页
数据的顺序存储与组织广东教育出版社严灿洪22数据的顺序存储与组织课件_第3页
数据的顺序存储与组织广东教育出版社严灿洪22数据的顺序存储与组织课件_第4页
数据的顺序存储与组织广东教育出版社严灿洪22数据的顺序存储与组织课件_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

国家中小学课程资源2.2

数据的顺序存储与组织年级:高一年级学科:信息技术(粤教版)主讲

人:严灿洪学校某省市塘厦中学问题导入数据存储顺序结构链式结构两种最基本的数据存储结构数组一维数组二维数组三维数组......新知学习3:数组在C++语言中,一维数组(Array)的一般定义方式为:int

a[10];

//定义整型数组a,其长度为10类型说明符

数组名[数组长度];例如:观察下面所定义的不同数组,分别说出它们的数组元素类型、数组名和数组长度。一维数组的定义方式intnum[100];charname[20];float

a[10],b[20];#define

maxsize

100float

f[maxsize];//定义整型数组num,其长度为100//定义字符数组name,其长度为20//定义浮点型数组a和b,其长度分别为10,20//定义常量maxsize,其值为100//定义浮点型数组f,其长度为maxsize探究活动2前面我们分析某省市商品进行信息化管理需要存储的数据类别,以婴儿食品的基本信息管理及库存管理为例,需要存储包含商品基本信息,如表2-7所示的婴儿食品基本信息表。探究活动2定义数组,用于存储包含婴儿食品基本信息的数据。//定义常量maxsize,值为100//商品基本信息结构定义//商品编号//商品名称//规格#define

maxsize

100structWareInfo

{string

wareno;stringname;stringspec;intperiod;floatprice;float

stocks;//保质期(月)//价格(元)//当前库存量};WareInfo

BabyFood[maxsize]

;

//商品信息一维数组int

TotalBF=0; //记录已有的商品数量struct

结构名{类型说明符

成员名1;类型说明符

成员名2;……};数组的下标可以是一个,也可以是多个。当数组有两个下标时,就称为二维数组。从逻辑结构上,我们也可以把这个二维数组看成一个n行m列的矩阵,并把第一个下标称为行下标,第二个下标称为列下标。二维数组二维数组在C++语言中,二维数组的一般定义方式为:int

b[4][3];

//定义b为4行3列的整数型二维数组例如:b的所有数组元素如下:类型说明符

数组名[常量表达式1][常量表达式2];b[0][0],b[0][1],b[0][2]b[1][0],b[1][1],b[1][2]b[2][0],b[2][1],b[2][2]b[3][0],b[3][1],b[3][2]二维数组的存储虽然二维数组在逻辑结构上具有行与列两个方向,但它作为一种顺序结构,所有元素在计算机内存空间中的物理存储地址仍是连续的。如在n行m列的二维数组b中,每个数据元素占用d个字节,假设b的第一个数据元素的计算机存储地址为Loc(b[0][0]),那么b的存储结构如右图所示。二维数组的应用例子利用二维数组,我们可以存储具有矩阵特点的事物信息,如井字棋、五子棋等棋盘游戏。在生活中,我们常常可以看到事物以矩阵的形式进行摆放,某省市商品的货架摆放(如图所示)。假设水果区的货架有n层,每一层有m列,处在某层某列的商品可能是编号为A001的苹果,也可能是编号为P005的鸭梨。二维数组的应用例子例如以下图示井字棋盘,可使用二维数组描述存储。char

chessboard[3][3];

//井字棋数组//第1行chessboard[0][0]='o';chessboard[0][1]='x';chessboard[0][2]='o';//第2行chessboard[1][0]='o';chessboard[1][1]='x';chessboard[1][2]='o';//第3行chessboard[2][0]='x';chessboard[2][1]='o';chessboard[2][2]='x';一维数组的基本操作遍历赋值遍历查找插入元素删除元素新知学习4:数组的基本操作一维数组的基本操作:遍历赋值1.遍历并赋值(输入)实现代码#include

<iostream>#definemaxsize10usingnamespace

std;int

a[maxsize];int

main()//引入iostream库,即输入输出流库。//定义常量maxsize,值为10//调用命名空间std内定义的所有标识符//定义整型数组a,其值为maxsize//主程序入口{for

(int

i=0;

i<maxsize;

i++)

//for循环从下标0到maxsize遍历{cin>>a[i]; //依次输入每个元素}}一维数组的基本操作:遍历查找2.在数组a中查找元素x,如果找到,返回元素的下标;如果找不到,则返回-1。实现代码int

array_find(int

a[],int

n,int

x)//定义整型函数array_find{if(a[i]==x)

return

i;

//若找到,返回下标位置ireturn

-1; //找不到,返回-1for(inti=0;

i<n;

i++) //for循环从下标0到n遍历}一维数组的基本操作:插入元素3.在数组a中第i(i≥0)个位置插入元素x,原来第i到第n-1个元素向后移(n为数组中已有元素个数)。实现代码void

array_insert(int

a[],int

n,int

x,int

i)

//定义无类型函数array_insert{for(int

j=n;

j>=i;

j--)

a[j]=a[j-1]; //第i到第n-1个元素向后移a[i-1]=x; //在数组a中第i(i≥0,下标i-1)个位置插入元素x}一维数组的基本操作:删除元素4.从数组a中删除第i(i≥0)

个元素。将第i个后元素逐个向前移即可。实现代码void

array_delete(int

a[],int

n,int

i)

//定义无类型函数array_delete{for(int

j=i;

j<n;

j++)

a[j-1]=a[j];

//将第i个后元素逐个向前移}二维数组最常见的操作对于二维数组,最常见的操作是遍历,与一维数组的遍历不同的是,我们把二维数组看成一个n行m列的矩阵,因此在程序实现时需要使用两重for循环。//两重for模板:按行列输出所有的元素for(i=0;i<maxrow;

i++){for(j=0;j<maxcolumn;

j++)cout<<a[i][j]<<"

";cout<<endl;}}二维数组遍历的实现代码#include

<iostream>#define

maxrow

5#define

maxcolumn

10usingnamespace

std;int

a[maxrow][maxcolumn];int

main(){int

i,j;for(i=0;i<maxrow;i++)for(j=0;j<maxcolumn;

j++){cin>>a[i][j];

//依次输入第(i,j)个元素}//按行列输出所有的元素for(i=0;i<maxrow;

i++){for(j=0;j<maxcolumn;

j++)cout<<a[i][j]<<"

";cout<<endl;}}知识小结数据存储顺序结构链式结构两种最基本的数据存储结构数组一维数组二维数组三维数组......项目实施某省市各类商品的基本信息表定义数组后,接下来就可以通过对数组的不同操作来实现商品管理系统对商品的基本信息管理及库存管理的功能。以婴儿食品管理为例,根据功能描述,编写程序代码,可参考配套学习资源包中的文档“第二章\课本素材\婴儿食品管理的数组操作.docx”。程序实现功能如下:项目实施程序实现功能如下:初始化婴儿食品基本信息,即根据表2-7所列信息,对婴儿食品数组进行遍历和赋值操作。根据商品名称,查询该商品是否存在,即对婴儿食品数组进行查找操作。管理新上架的商品,即对婴儿食品数组进行插入操作(新商品插到数组最后)。管理刚下架的商品,即对婴儿食品数组进行删除操作(根据商品名称删除相应的数组元素)。根据商品名称,查询该商品的当前库存量,根据需要修改当前库存量。数据的顺序存储与组织新知学习探究与实践项目实施一维数组一维数组的基本操作二维数组及其基本操作一维数组的定义方式二维数组的定义方式用二维数组描述井字棋盘课堂小结单选题:以下的程序片段是实现从具有n个元素的数组a中删除第t个元素的功能,请问横线处缺少的代码应该是(

)。for

(i=t;

i<n;

i++){}A.a[t]=a[i];

B.a[i]=a[i+1];C.a[i]=a[i-1];

D.a[i-1]=a[i];课后练习【情境题】现实生活中,我们经常需要将两个有序的序列合并为一个新的有序序列,这在计算机中通常实现为将两个有序数组合并为一个新的有序数组。例如,图书馆有一批杂志需要按出版时间先后顺序进行整理,为了提高工作效率,安排两位同学同时整理,他们的做法是,先将杂志分为两堆,每位同学整理一堆,整理好后再合并为一堆。合并的方法是:先分别从两堆书中各取一本,对比出版年份(这里假设出版时间只有年份,没有月日)。如果两个一样,则将两本书一起放入新的书架中,然后又取下一本继续比较;如果不一样,则将年份小的放到新的书架上,年份较大的那本留下来继续比较。课后练习【续】接下来从刚才年份小的杂志所在的那一堆书中取下一本,继续与留下来的那本比较,方法与前面相同。依次类推,很快就可以将杂志整理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论