第五章 数组与常用基础类库
- 格式:pptx
- 大小:113.79 KB
- 文档页数:19


C#常⽤类库Array类1. ⽤括号声明数组是C#中使⽤Array类的记号。
在后台使⽤C#语法,会创建⼀个派⽣于抽象基类Array的新类。
这样,就可以使⽤Array类为每个C#数组定义的⽅法和属性了。
2. Array类实现了IEumerable、ICollection和IList接⼝,以访问和枚举数组中的元素。
由于⽤定制数组创建的类派⽣于Array抽象类,所以能使⽤通过数组变量执⾏的接⼝中的⽅法和属性。
a) IEumerable接⼝是由foreach语句⽤于迭代数组的接⼝。
b) ICollection接⼝派⽣于IEumerable接⼝,这个接⼝主要⽤于确定集合中的元素个数,或⽤于同步。
c) IList接⼝派⽣于ICollection接⼝,Array类实现IList接⼝的主要原因是IList接⼝定义了Item属性,以使⽤索引器访问元素。
1. Array类包含的如下属性和⽅法可以⽤于每个数组实例。
属性及⽅法说明Length Length属性返回数组中的元素个数。
如果是⼀个多维数组,该属性会返回所有阶的元素个数。
如果需要确定⼀维中的元素个数,则可以使⽤GetLength()⽅法LongLength Length属性返回int值,⽽LongLength属性返回long值。
如果数组包含的元素个数超出了32位int值的取值范围,就需要使⽤LongLength属性,来获得元素个数Rank使⽤Rank属性可以获得数组的维数CreateInstance()如果事先不知道元素的类型,就可以使⽤该静态⽅法,因为类型可以作为Type对象传送给CreateInstance()⽅法。
SetValue()SetValue()⽅法设置数组的元素,其参数是每⼀维的索引Clone()因为数组是引⽤类型,所以将⼀个数组变量赋予另⼀个数组变量,就会得到两个指向同⼀数组的变量。
⽽复制数组,会使数组实现ICloneable接⼝。
这个接⼝定义的Clone()⽅法会创建数组的浅副本。
第2章数组一、复习要点本章主要讨论数组抽象数据类型及利用数组实现的顺序表、字符串等数据结构。
它们都是线性结构。
但数组是直接存取结构,对以根据数组元素的下标直接在数组中存取该元素,而利用它实现的顺序表是顺序存取结构,所有数据元素集中存储于表的前端。
字符串是顺序表的特化。
本章复习的要点:1、基本知识点2、算法设计>静态数组对象的定义,动态数组对象的定义>数组中数组元素的原地逆置>递归计算数组长度、数组中所有元素的和及平均值>在顺序表中搜索值为itein的元素,在有序顺序表中搜索值为item的元素>在有序顺序表中插入新元素item到第i个位置>在有序顺序表中删除第i个元素>两个有序顺序表的合并,m个有序顺序表的合并二、难点与重点1、作为抽象数据类型的数组:数组的定义、数组的按行顺序存储与按列顺序存储>确定数组元素的三要素:行号、列号、元素值>数组元素的存放地址计算2、顺序表:顺序表的定义、搜索、插入与删除>顺序表搜索算法、平均比较次数的计算>插入与删除算法、平均移动次数的计算三、习题的解析2-3设有一个线性表(e0, e b•••, e n.2, e n.|)存放在一个一维数组A[arraySize]中的前n个数组元素位置。
请编写一个函数将这个线性表原地逆置,即将数组的前n个原址内容置换为(e n.h en-2,…,e 【,eo)。
【解答】template<class Type> void inverse ( Type A| ], int n ) {l\pe tmp;for (int i = 0; i <= ( n-1 )/2; i++ ) {tmp = A(i]; A[i| = A[n-iT ]; A[nTT ] = tmp;}}2-5顺序表的插入和删除要求仍然保持各个元素原来的次序。
设在等概率情形下,对有127 个元素的顺序表进行插入,平均需要移动多少个元素?删除一个元素,又平均需要移动多少个元素?【解答】若设顺序表中已有n二last+1个元素,last是顺序表的数据成员,表明最后表项的位置。
C语言数组详细讲解数组是C语言中的一种非常重要的数据类型,它可以存储一组相同数据类型的数据,并通过下标访问它们。
本文将详细介绍C语言中数组的定义、初始化、访问、多维数组、指针和数组等相关概念,以及数组在程序中的常见用途。
一、数组的定义在定义数组变量时,需要指定数组中元素的数据类型和数组的大小。
数组的大小可以是一个整型常量、变量或常量表达式。
定义方式如下:数据类型数组名[大小];举个例子:int a[10]; //定义一个包含10个整数的数组achar n[2][3][4]; //定义一个包含2个三维数组,每个三维数组包含4个字符型元素的三维数组二、数组的初始化数组可以通过初值列表或程序赋值的方式进行初始化。
1、初值列表初值列表是一组用逗号隔开、用花括号括起来的值,用于初始化数组中的元素。
初值列表中的元素的个数必须等于数组中元素的数量。
举个例子:char b[4]={'a','b','c','d'}; //定义一个包含4个字符的数组b,并将其初始值分别赋为'a'、'b'、'c'、'd'2、程序赋值通过循环等方式,可以在程序中进行赋值。
举个例子:int a[5];for(int i=0;i<5;i++){a[i]=i+1;}//定义一个包含5个整数的数组a,并将其第i个元素赋值为i+1三、数组的访问数组中每个元素在内存中都有一个地址,可以通过数组的下标来访问它们。
数组下标从0开始,因此第一个元素的下标是0,最后一个元素的下标为数组大小减1。
访问方式如下:数组名[下标];int a[5]={1,2,3,4,5};printf("%d",a[0]); //输出数组a中第一个元素的值1printf("%d",a[4]); //输出数组a中最后一个元素的值5四、多维数组char b[2][3][4]={{{'A','B','C','D'},{'E','F','G','H'},{'I','J','K','L'}},{{'M','N','O','P'},{'Q','R','S','T'},{'U','V','W','X'}}};//定义一个三维数组bprintf("%c",b[0][1][2]); //输出数组b中第二个数组中第三个元素的值'G'printf("%c",b[1][2][1]); //输出数组b中最后一个数组的第二个元素的值'V'五、指针和数组由于数组的元素在内存中是连续分布的,因此可以把数组名看作是一个指向数组中第一个元素的指针。