字符串长度就是所含字符的个数
顺序表
- 优点:查找和修改(首先要查找到)效率高,空间占用比链表小,时间复杂度 O(1)
- 缺点:插入和删除元素时,后面的元素都需要进行移动,编译时确定大小,时间复杂度 O(n)
链表
- 优点:插入和删除元素比较方便,只需要修改指针,空间大小不必指定,时间复杂度 O(n)
- 缺点:查询和修改(首先要查找到)效率并不高,而且因为添加了指针等中间数据结构,所以空间占用比顺序表大,时间复杂度 O(1)
广义表(Lists,又称列表)是一种非线性的 数据结构 ,是 线性表 的一种推广。即广义表中放松对表元素的原子限制,容许它们具有其自身结构
二维数组也可以看成是一维数组,只不过这个一维数组的类型为数组
朴素的匹配只匹配一次,不用计算next数组,所以速度更快
字符串若要相等:长度必须相等,对应位置的字符也相等!
多型就是数据元素的类型不确定,字符串的每个元素始终都是字符(char),而不会是别的类型
元素a20表示a[2][0]为第三行第一列的那个元素的地址为560,每个元素占4个字节,元素a10表示a[1][0]第二行第一列的那个元素的,已知二维数组为A10×10,所以a[2][0]和a[1][0]相距10个元素,所以4*10=40个字节,答案选择A
二维数组存储方式可以分为行优先和列优先俩种,所以数组的地址计算和数组的存储方式有关。
数组的下标是从0开始,也就是说a[0]是第一个,题目说明了有10个元素,那么最后一个应该是a[9]。选项中出现了a[10],说明越界了。
数据的逻辑结构分为线性结构和非线性结构。
常用的线性结构有:线性表,栈,队列,双队列,数组,串。
常见的非线性结构有:二维数组,***数组,广义表,树(二叉树等),图。
由于是对称矩阵,因此压缩存储可以认为只要存储下三角矩阵。
(0,0) 1
(1,0)(1,1) 2
(2,0)(2,1) (2,2) 3
(3,0)(3,1) (3,2) (3,3) 4
(4,0)(4,1) (4,2) (4,3) (4,4) 5
(5,0)(5,1) (5,2) (5,3) (5,4) (5,5) 6
(6,0)(6,1) (6,2) (6,3) (6,4) (6,5) (6,6) 7
(7,0)(7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7) 8
(8,0)(8,1) (8,2) (8,3) (8,4) (8,5) (8,6) 6
1+2+3+4+5+6+7+8+6=42
答案选c
由于是对称矩阵,因此压缩存储可以认为只要存储下三角矩阵。
(1,1) 1
(2,1) (2,2) 2
(3,1) (3,2) (3,3) 3
(4,1) (4,2) (4,3) (4,4) 4
(5,1) (5,2) (5,3) (5,4) (5,5) 5
(6,1) (6,2) (6,3) (6,4) (6,5) (6,6) 6
(7,1) (7,2) (7,3) (7,4) (7,5) (7,6) (7,7) 7
(8,1) (8,2) (8,3) (8,4) (8,5) 5
1+2+3+4+5+6+7+5=33
答案选B
冒泡排序法,最坏情况为(n-1)+(n-2)+……+1=n(n-1)/2 所以复杂度是N^2
最大和最小分别是01111000 10000111,那么10000111的原码是11111001为-121
假设是2*2的矩阵,下三角矩阵有3个元素,只是少了一个元素,没有达到减少一半的空间。
答案为b *p=x这里指针p指向数组的首元素地址,p+=2则指针指向第三个元素,而*++p是前置加加,p先自增,再解引用,就指向第四个元素了 b中为后置加加,是先解引用再加所以不影响,正确, c中p+=3就错了,因为指向第四个元素了 d中++*p,因为*p为3,所以就是++3了,结果为4
循环队列中元素个数计算方法是固定的,即(尾-头)%长度,但是由于是循环队列所以尾可能会小于头,所以要加上长度,使尾-头保持是正整数,然后再对长度求余,即元素个数
先假设每行都有三个,66行就198个,减去第一行一个剩下197个,然后算最后一行,第65列所处的位置是三个数的第一个,所以还要再减去2。即66*3-(3-(65-1)%3)-1=195
M M::中,第一个M的表示返回值的类型,第二个M是类名,该函数最后return c,c又是类M的对象,所以返回值的类型是类M
a是个行指针,a+1后指向下一行,*(a+1)后变成一个列指针,再+2仍为列指针,指向a数组第一行第二列的元素,选B。题目描述的不准确,第一行也可认为是a[0]。按照给的选项只能选B