牛客网选择题刷题记录之C++

数据结构

顺序表

  1. 在一个长度为n的顺序表的任意位置插入一个新元素的渐进时间复杂度为()
    A. O(n) B. O(n/2) C. O(1) D. O(n的平方)
    答案: A
    解析:顺序表的存储方式可以理解为链表,(过程为:遍历一遍,插入),所以时间复杂度为O(n)
  2. 设有一个长度为n的顺序表,要在第i(从1开始)个元素之前(也就是插入元素作为新表的第i个元素),则移动元素个数为( )。
    A. n-i+1
    B. n-i
    C. n-i-1
    D. i
    答案: A. n-i+1
    举例: 1,2,3,4,5. 要在第i = 2 的位置插入新元素,则则需要移动2,3,4,5共四个数,也就是n-i+1
  3. 稀疏矩阵一般的压缩存储方式有两种,即 ()
    A. 二维数组和三维数组
    B. 三元组和散列
    C. 三元组和十字链表
    D. 散列和十字链表
    答案: C
    解析:背下来
  4. 在一个长度为n的顺序表中删除第i个元素(1<=i<=n)时,需向前移动 () 个元素
    A. n-i
    B. n-i+l
    C. n-i-1
    D. i
    答案: A. n-i
    举例: 1,2,3,4,5. 要在第i = 2 的位置删除元素,则则需要移动3, 4, 5三个数字,就是n-i

数组存储

5. 若数组A[0…m-1][0…n-1]按列优先顺序存储,则a[i][j]地址为( )。
A. LOC(a00)+[j*m+i]
B. LOC(a00)+[j*n+i]
C. LOC(a00)+[(j-1)*n+i-1]
D. LOC(a00)+[(j-1)*m+i-1]

答案: A. LOC(a00)+[j*m+i]
举例: 根据二维数据结构可知,MxN的矩阵,有M行N列,则行宽为N,列宽为M。因此,
列优先存储,存储结构为 [列数 * 列宽 + 行数]
行优先存储,存储结构为 [行数 * 行宽 + 列数]

设栈的初始状态为空,当字符序列 "a3_" 作为栈的输入时,输出长度为 3 的且
可以用作 C 语言标识符的字符串序列有()个
A. 3
B. 4
C. 5
D. 6

答案: A
举例: 首先,栈的顺序是先进后出
【字符序列为a3_ 】
1)a入栈,再出栈,然后3入栈,再出栈,—入栈,再出栈 序列是a3_
2)a入栈,再出栈,然后3,—入栈,再出栈,序列是a_3
3)a入栈,3入栈,再出栈,a出栈, —入栈,再出栈 序列是3a_
4) a入栈,3入栈,再出栈, —入栈,序列是3_a
5) a入栈,3入栈,_入栈,序列是_3a
其次,C语言的标识符不能以数字开头,去除3a_和3_a 答案为3


补充:卡特兰数公式,出栈情况求和:h(n)=C(2n,n)/(n+1) (n=0,1,2,…)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值