2019 作业帮后端 笔试

单选

1. 一个局域网的子网掩码是255.255.252.0,下面哪个IP跟其他3个不在同一个局域网上(B)
A、192.168.1.252 B、192.168.4.3 C、192.168.3.3 D、192.168.1.5
解析:IP地址跟子网掩码按位与运算得到网络地址,由该子网掩码得到网络地址占22位,主机地址占10位,ACD的IP跟subne mask AND后,都是192.168.0.0

2. 在带有头节点的单链表HL中,向表头插入一个由指针p指向的节点,则执行:p->next = HL->next; HL->next = p;
解析:

先连接尾巴,后连接头部

void insert(Node* pHead, Node* pNew){
  pNew -> pNext = pHead->pNext;
  pHead->pNext = pNew; 
}
  • 带有头节点的链表
    头指针为链表的名字
    1. 带头节点是为了操作的统一与方便而设立的,放在第一个元素结点之前,其数据域一般无意义(当然有些情况下也可存放链表的长度、用做监视哨等等)。
    2. 有了头结点后,对在第一个元素结点前插入结点和删除第一个结点, 其操作与对其它结点的操作统一了。
    3. 首元结点也就是第一个元素的结点,它是头结点后边的第一个结点。
    4. 头结点不是链表所必需的。
  • 不带有头节点的单链表

3. 当n = 10时,下列函数返回 6

int foo(int n){
  if(n < 7)
    return n;
  return foo(foo(n - 2) + 1);  
}

解析:当成是数学函数来理解f(10) = f(f(8) + 1) = f(7) = 6
f(8) = f(f(6) + 1) = f(6 + 1) = f(f(5) + 1) = f(6) = 6

4. 最坏情况下,合并两个大小为n的已排序数组所需要的比较次数为2n - 1
最好情况为n

  • 假设两个数组的长度为m,n
    最好情况下,至少需要两两比较一个数组的长度
    例如:1,2,3和4,5,6,7合并
    1,2,3,4和5,6,7
    最坏情况下,比较m + n - 1次
    例如:4,9,15和3,10,14合并

猜你喜欢

转载自blog.csdn.net/weixin_40804971/article/details/100577239