牛客网笔记之数组(一)

最近开始在“牛客网”上做题,希望通过日积月累,每天记录一点小知识,每天前进一小步。

今天练习的题目关于数组

1. 数组存储:链式存储、顺序存储

线性表逻辑上是线性的,存储上可以是顺序的,可以是链式的
链式存储可以连续,可以不连续,存储时不管其连续还是不连续,都是用指针指向下一个结点

2.顺序存储的根据数组指针直接定位,在顺序表的任何位置上插入一个数据元素,平均需要移动n/2个数据元素,算法效率为O(n)

3.稀疏矩阵:

有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是(66)
解析:每个元素要用行号,列号,元素值来表示,由于二维稀疏矩阵的大小都是在256之内,所以行号和列号只需要char来存储。在用三元组表示稀疏矩阵,还要三个成员来记住,矩阵的行数列数,总的元素数,所以所需的字节数是10*(1+1+1)*2+3*2=66

4.关于 int a[10]; 问下面哪些不可以表示 a[1] 的地址?

A. a+sizeof(int) 
// 不正确, 在32位机器上相当于指针运算 a + 4
B. &a[0]+1 
// 正确,数组首元素地址加1,根据指针运算就是a[1]的地址
C. (int*)&a+1 
// 正确,数组地址被强制类型转换为int*,然后加1,这样和B表示的一个意思
D. (int*)((char*)&a+sizeof(int))
// 正确,数据地址先被转换为char*,然后加4,根据指针运算公式,向前移动4 * sizeof(char),之后被转换为int*,显然是a[1]的地址

5.基址:

假设以行序为主序存储二维数组A=array[100][100],设每个数据元素占2个存储单元,基地址为10,则A[5,5]的地址为(1020)。
解析:A[5][5]的地址为:5*100*2+5*2+10=1020,千万不要忘记基址是10,不是0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值