其实求的就是A[7][4]地址,故位置为(7*10 + 4)* 4 = 296
数组静态分配内存,并在内存中连续,链表动态分配内存,但不连续查询时,数组下标查询的时间
复杂度为O(1),数组元数查询的时间复杂度为O(n),链表查询的时间复杂度为O(n)
插入或删除时,链表的时间复杂度为O(1),数组为O(n)
数组元素在栈区,链表元素在堆区
数组下标从0开始, a[i][j]实际上是第i+1行,第j+1列的元素, 求它前面的元素个数只需先算出它前面的i行元素总个数i*m,然后再加上它所在行的前j个元素。 也就是i*m+j
逻辑上连续物理上不连续
队列中,队列满的条件是:(rear+1)%QueueSize=front;
队列长度公式是:(rear-front+QueueSize)%QueueSize。
有一个用数组C[1..m]表示的环形队列,m为数组的长度。假__牛客网 (nowcoder.com)
设有一个10阶对称矩阵A[10][10],采用压缩存储方式按__牛客网 (nowcoder.com)
A[5][5]前面有1、2、3、4共四行,有1、2、3、4共四列,
所以它的共有4*100+4=404个元素,又因为每个元素占2个存储单元,所以这404个元素共占存储
404*2=808个存储单元,又因为数组A的起始地址(就是题目说的基地址)是10,所以
A[5][5]d的起始地址就是808+10=818.
数组A=array[1..100,1..100]以行序为主序__牛客网 (nowcoder.com)
二维数组k[1..7,1..9],每元素大小占2个字节,而且_顺丰集团笔试题_牛客网 (nowcoder.com)
主对角线都存:10个,剩下的90个只存一半45个,共55个
将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为_搜狐笔试题_牛客网 (nowcoder.com)
jdk8以及之后是数组+链表/红黑树,8之前是数组+链表的方式啊
HashMap的数据结构是怎样的?_360公司笔试题_牛客网 (nowcoder.com)
假设该数组的内存起始位置为 200 , aver__牛客网 (nowcoder.com)
x如此定义会在后面添加\0,所以x比y多一个结束符号
给出以下定义: Char x[]=”abcdefg”; Ch__牛客网 (nowcoder.com)
倒数第n个是从1开始数,第n个的下标如果从后数就是n-1,因为是倒数所以用99-(n-1) = 100-n已知数组char a[100],以下哪个选项可以访问数组的倒__牛客网 (nowcoder.com)
根据题目得出:数组名s为字符数组的首地址,并且将ps指针指向数组的首地址。
- A选项,ps+2指针向后移动2个单位指向字符'o'的地址,并不是地址中的值。所以A错误。
- B选项,s[2]采用数组下标的方式表示,从0开始的字符,刚好是'o'
- C选项,ps[2]采用指针下标的方式表示,从0开始的字符,刚好是'o'
- D选项,对ps+2的地址进行取存放的值,刚好是'o'
若定义:char s[20]="programming",*__牛客网 (nowcoder.com)
实际存储为{'H','e','l','l','o','\0'},所以是6个
char str[]="Hello", sizeof(str_迅雷笔试题_牛客网 (nowcoder.com)
数组指针和指针数组的区别 - jack_Meng - 博客园 (cnblogs.com)
请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正__牛客网 (nowcoder.com)
下列叙述中正确的是( )。__牛客网 (nowcoder.com)
三维数组可以看成是一本书!
int a[3][4][2]; 就是有3页每页4行2列
在定义 int a[3][4][2]; 后,第 20 个元素__牛客网 (nowcoder.com)
C语言中,字符串默认每个占用1字节,末尾还有'\0',所以一共是4字节在C语言中,顺序存储长度为3的字符串,需要占用( )个__牛客网 (nowcoder.com)
'e'-s == 'e'-'a' == 4 而数组a[4] == 5
已知定义如下代码段 ,则以下哪个选项结果为5。() int __牛客网 (nowcoder.com)
在定义字符串的时候,会有一个'\0'作为字符串的结束标志,所以完整的字符串应为"a0\0a0\0\0",使用sizeof()函数计算数组a的占用的空间大小应为7,strlen()函数计算字符串长度是碰到第一个字符串结束符'\0'为止,且不包含'\0',所以strlen(a)为2
执行以下代码段(程序已包含所有必需的头文件)会输出什么结果。__牛客网 (nowcoder.com)
已知一稀疏矩阵的三组元表为:(1,2,3),(1,6,1),__牛客网 (nowcoder.com)
一维:LOC(ai)=LOC(a0)+i*L (0<=i<n)
二维 A【0..m-1】【0..n-1】
二维行开始:LOC(ai,j)=LOC(a0,0)+[i*(列+1)+j]*L
二维列开始:LOC(ai,j)=LOC(a0,0)+[j*(行+1)+i]*L
设二维数组A[0..m-1][0..n-1]按行优先顺序存储__牛客网 (nowcoder.com)
数组 A[0…5 , 0…6] 的每个元素占 5 个字节,将__牛客网 (nowcoder.com)
数组Q[0..m-1]用来表示一个循环队列, 用front指__牛客网 (nowcoder.com)
线性表是________。__牛客网 (nowcoder.com)
两个栈的栈顶
一个在数组第一个元素,朝着数组索引增加方向增加
一个栈顶在数据最后一个元素,朝着数组索引减少方向增加
当两个栈的栈顶位置相差1时,数组被写满
若数组S[1..n]作为两个栈S1和S2的存储空间,对任何一__牛客网 (nowcoder.com)
已知定义数组 char a[3];,以下哪个选项不能代表数组__牛客网 (nowcoder.com)
对称矩阵,只需要存一半就行了, 第一行:1个 第二行:2个 第三行:3个 ………… ………… 第八行:1~5,前5个 所以:1+2+3+4+5+6+7 再加 5 总共得:33
设有一个 10 阶的对称矩阵 A ,采用压缩__牛客网 (nowcoder.com)
这是一个三行四列的数组
*(a+1)表示第二行的首地址,和a[1]一样。
*(a+1)+2第二行第三个数字的地址
*(*(a+1)+2)就是第二行第三个数字的值
已知int a[3][4];则下列能表示a[1][2]元素值_迅雷笔试题_牛客网 (nowcoder.com)
先看未定义标识符p,p的左边是*,*p表示一个指针,跳出括号,由于[]的结合性大于*,所以*p指向一个大小为10的数组,即(*p)[10]。左边又有一个*号,修释数组的元素,*(*p)[10]表示*p指向一个大小为10的数组,且每个数组的元素为一个指针。跳出括号,根据右边(int *)可以判断(*(*p)[10])是一个函数指针,该函数的参数是int*,返回值是int。
声明一个指向含有10个元素的数组的指针,其中每个元素是一个函_阿里巴巴笔试题_牛客网 (nowcoder.com)
1、int(*p)[4];------ptr为指向含4个元素的一维整形数组的指针变量(是指针)
2、int *p[4];-------定义指针数组p,它由4个指向整型数据的指针元素组成(是数组)
3、int(*)[4];--------实际上可以看作是一种数据类型。也就是第一个(int(*p)[4];)
int (*p)[3] 中p的含义是什么?_迅雷笔试题_牛客网 (nowcoder.com)
代码段中定义了数组a,a每列三个元素,a[1][1]为5,所以指针b应指向数组中5所在地址。
由于数组中地址是连续的,b[2]应为7。
执行以下代码段会输出什么结果。() int a[][3] =__牛客网 (nowcoder.com)
插入排序的原理:始终定义第一个元素为有序的,将元素逐个插入到有序排列之中,其特点是要不断的移动数据,空出一个适当的位置,把待插入的元素放到里面去。
选择排序的原理:每次在无序队列中“选择”出最小值,放到有序队列的最后,并从无序队列中去除该值(具体实现略有区别)。
在第 i 次排序中,前 i - 1 个元素始终是有序的,此时只需把第i个元素插入到有序的序列中即可,故代码中体现的是插入排序的思想。代码中对当前 a[i]>a[j](0<=k<i-1)是否成立进行判断,若成立则将 a[j] 往后移(即大的数排在前面,小的数排在后面),故代码中的排序原则为降序排。
插入排序:
printline("before sort:", v);
for (int i=1; i<v.size(); i++){
int key = v[i];
int j = i-1;
while (j >= 0 && v[j] > key){
v[j+1] = v[j];
j--;
}
v[j+1] = key;
}
printline("after sort:", v);
选择排序:
for(int i=0; i<v.size(); i++){
int min = v[i];
int temp;
int index = i;
for(int j=i+1;j<v.size();j++){
if(v[j] < min){
min = v[j];
index = j;
}
}
temp = v[i];
v[i] = min;
v[index]= temp;
}
若有以下程序段,则该程序段的功能是?_迅雷笔试题_牛客网 (nowcoder.com)
数组定义为”int a[4][5];”, 引用”*(a+1)__牛客网 (nowcoder.com)
线性结构是一个有序数据元素的集合。 其中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。
常用的线性结构有:线性表,栈,队列,双队列,数组,串。
非线性结构中各个数据元素不再保持在一个线性序列中,每个数据元素可能与零个或者多个其他数据元素发生联系。根据关系的不同,可分为层次结构和群结构。
二维数组就是一种非线性结构(因为是一对多的关系了:a[0]对应两个:a[0][0]、a[0][1])
二维数组和多维数组均不是线性结构。( )__牛客网 (nowcoder.com)
下列叙述中正确的是( )。__牛客网 (nowcoder.com)
数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位__牛客网 (nowcoder.com)
实现机理是这样的:
有一组数据A=[29,6,28,20,2,24]
①第一次先排前俩,第二次排前三。。。。以此类推
②先获取A[j]的值存入一个变量中
③每次循环判断大小的目的就是为了找到A[j-1]小于e的情况
④当出现前大于e的情况,那就把大的值后移,也就是赋值给A[j]
⑤当出现前不大于e的时候(A[j-i]<e),break跳出,此时j不减减,此时j的位置就是需要e来填充的
第一趟的结果为6 29 28 20 2 24
第二趟为6 28 29 20 2 24
第三趟: j为3,e为A[3] = 20,那么先比较的就是A[3-1]和e,其结果为A[3]被赋值为A[3-1],
而后j-- 进入A[2-1]和e的判断,同样是A[2]被赋值为A[1],
然后再判断A[0]和e,发现A[0]小于e,break退出,此时j=1,A[1]=e;end;
经过三趟排序后,数组 A 的排列状态将是()__牛客网 (nowcoder.com)
A选项,应该是a[10]="abcdefg"
B选项,a是数组首地址不能这样赋值
C选项,*p=a,也是指针地址变量,不能这样赋值
在 C/C++ 中,若有定义 char a [10], *p__牛客网 (nowcoder.com)
- 第0行,一个元素
- 第1行,两个元素
- 第2行,三个元素
- ……第i行,i+1个元素
等差数列求和公式:Sn=na1+n(n-1)d/2 经过代入整理得出:i(i+3)/2+1个元素,由于从0开始存储,所以i(i+3)/2
将一个n×n的对称矩阵A的下三角部分按行存放在一个一维数组B__牛客网 (nowcoder.com)
二维数组在内存中也是连续存储的,他可以通过 arr[i][j]寻址是因为我们定义了这个数组有多少列,
加入有N列,这样数组寻址的时候编译器会自动得到 *(arr+(j*N)+i)所以传参数的时候列数必须指定。
所以D正确A不正确。B表示有8个指向int指针的数组,不对,而C中(*s)等价于s[]
已知数组D的定义是int D[4][8];,现在需要把这个数_迅雷笔试题_牛客网 (nowcoder.com)
在java 中,声明一个数组时,不能直接限定数组长度,只有在创建实例化对象时,才能对给定数组长度.。
如下,1,2,3可以通过编译,4,5不行。而String是Object的子类,所以上述BCF均可定义一个存放50个String类型对象的数组。
1. String a[]=new String[50];
2. String b[];
3. char c[];
4. String d[50];
5. char e[50];
指针数组( * stings[] ):可以说成是”指针的数组”,首先这个变量是一个数组,其次,”指针”修饰这个数组,意思是说这个数组的所有元素都是指针类型,在32位系统中,指针占四个字节。
数组指针( (*strings)[] ):可以说成是”数组的指针”,首先这个变量是一个指针,其次,”数组”修饰这个指针,意思是说这个指针存放着一个数组的首地址,或者说这个指针指向一个数组的首地址。
定义语句"double * array [8]&q__牛客网 (nowcoder.com)
第一个是转移字符,第二个表示在次数输出字符串,第三个表示换行
以下程序段的运行结果是( )。__牛客网 (nowcoder.com)
若有定义: int c[4][5],( *pc)[5]; p__牛客网 (nowcoder.com)
定义了数组s,s为数组名,代表数组的首地址,不能直接赋值,所以编译出错
执行以下代码段会输出什么结果。() char s[5]; s__牛客网 (nowcoder.com)
循环队列的相关条件和公式:
队尾指针是rear,队头是front,其中QueueSize为循环队列的最大长度
1.队空条件:rear==front
2.队满条件:(rear+1) %QueueSIze==front
3.计算队列长度:(rear-front+QueueSize)%QueueSize
4.入队:(rear+1)%QueueSize
5.出队:(front+1)%QueueSize
假设以数组Data[0..m-1]存放循环队列的元素,其头尾__牛客网 (nowcoder.com)
假设以行序为主序存储二维数组A=array[100][100__牛客网 (nowcoder.com)
二维数据就是以数组为元素的数组,外面的大括号表示这个数组,里面的大括号表示数组形式的元素,只有一个数字说明元素只赋了A[0][0],A[1][0],A[2][0],其余元素都没赋值或者赋值为0,据实验表明dev和codeblock都是把其余元素赋值为0
c中,二维数组初始化的方法是:int a[3][3]={{1__牛客网 (nowcoder.com)
下列选项中,能正确定义数组的语句是( )。__牛客网 (nowcoder.com)
若稀疏矩阵采用三元组表形式进行压缩存储,若要完成对三元组表进__牛客网 (nowcoder.com)
以下选项中,正确定义二维数组的是哪个选项。()__牛客网 (nowcoder.com)
若 GetHead 【 GetTail 【 GetHead __牛客网 (nowcoder.com)
数组常用的两种基本操作是( )。__牛客网 (nowcoder.com)
在面向对象的程序设计中,关于数组,下列说法正确的有()_斐讯笔试题_牛客网 (nowcoder.com)
数组A[1..5,1..6]的每个元素占5个单元,将其按行优__牛客网 (nowcoder.com)
执行以下代码段(程序已包含所有必需的头文件)会输出什么结果。__牛客网 (nowcoder.com)
在下列语句中,正确的是( )。__牛客网 (nowcoder.com)
设有下面的程序段: char s[ ]=”china”;__牛客网 (nowcoder.com)
Array对象常用方法中:
不改变原数组:
1、 concat()
- 连接两个或多个数组
- 不改变原数组
- 返回被连接数组的一个副本
2、join()
- 把数组中所有元素放入一个字符串
- 不改变原数组
- 返回字符串
3、 slice()
- 从已有的数组中返回选定的元素
- 不改变原数组
- 返回一个新数组
4、 toString()
- 把数组转为字符串
- 不改变原数组
- 返回数组的字符串形式
改变原数组:
5、 pop()
- 删除数组最后一个元素,如果数组为空,则不改变数组,返回undefined
- 改变原数组
-
返回被删除的元素
6、 push()
- 向数组末尾添加一个或多个元素
- 改变原数组
- 返回新数组的长度
7、 reverse()
- 颠倒数组中元素的顺序
- 改变原数组
- 返回该数组
8、 shift()
- 把数组的第一个元素删除,若空数组,不进行任何操作,返回undefined
- 改变原数组
- 返回第一个元素的值
9、 sort()
- 对数组元素进行排序(ascii)
- 改变原数组
- 返回该数组
10、 splice()
- 从数组中添加/删除项目
- 改变原数组
- 返回被删除的元素
11、 unshift()
- 向数组的开头添加一个或多个元素
- 改变原数组
- 返回新数组的长度
将数组 var a=[1,2,3] 变成数组 [4,3,2,_阿里巴巴笔试题_牛客网 (nowcoder.com)
线性表的顺序存储结构是一种( &nbs__牛客网 (nowcoder.com)
以下能对一维数组 a 进行正确初始化的语句是()__牛客网 (nowcoder.com)