Day3刷题总结

  1. 已知L是带头节点的单链表,节点P既不是头节点(第一个节点),也不是尾节点,删除P节点直接后继节点的语句序列是(C)
    A.P=P->next;
    B.P->next=P;
    C.P->next=P->next->next;
    D.P=P->next->next;
    解析:
    删除p->next节点,只需将p->next->next赋给p->next即可。
  2. 快速排序方法在()情况下最不利于发挥其长处(D)
    A.要排序的数据量太大
    B.要排序的数据中含有多个相同值
    C.要排序的数据个数为奇数
    D.要排序的数据已基本有序
    解析:
    快速排序的基本思想是以基准元素为中心,将待排序表分成两个子表,然后继续对子表进行划分,直到所有子表的长度为1。如果每次划分结果,两个子表长度相等,则效率最高,如果一个子表的长度为0则效率最低。对已基本有序的表以第1个为标准进行划分时,其中一个表长度将基本为0,效率最低。
  3. 以下哪种排序是稳定的?(C)
    A.希尔排序
    B.堆排序
    C.冒泡排序
    D.快速排序
    解析:
    在这里插入图片描述
  4. 当待排序记录已经从小到大排序或者已经从大到小排序时,快速排序的执行时间最省(B)
    A.对
    B.错
    解析:
    几乎有序时, 快排的时间复杂度退化到O(nn)。 无序时, 快排才比较省时间O(nlogn)。在待排序记录已经有序的情况下,执行时间最省的是堆排序。
  5. 在有n个结点的二叉链表中,值为非空的链域的个数为( A)。
    A.n-1
    B.2n-1
    C.n+1
    D.2n+1
    解析:
    在有N个结点的二叉链表中必定有2N个链域。除根结点外,其余N-1个结点都有一个父结点。所以,一共有N-1个非空链域,其余2N-(N-1)=N+1个为空链域。
  6. 下列叙述中正确的是( D)
    A.循环队列是队列的一种链式存储结构
    B.循环队列是队列的一种顺序存储结构
    C.循环队列是非线性结构
    D.循环队列是一种逻辑结构
    解析:
    在这里插入图片描述
  7. 邻接表是图的一种顺序存储结构,这种说法(B)
    A.正确
    B.错误
    解析:应该是 链式存储结构 ;
    邻接表指的是:为图的每个顶点建立一个单链表,第i个单链表中的结点表示依附于顶点Vi的边(对于有向图是以Vi为尾的弧)。
  8. 下面有关数据结构的说法是正确的?(B)
    A.数组和链表都可以随机访问
    B.数组的插入和删除可以是 O(1)
    C.哈希表没有办法做范围检查
    D.以上说法都不正确
    解析:
    在数组的开头或结尾插入和删除 是O(1),但正常情况下为O(n)。所以说数组的插入和删除复杂度可能是O(1)。
  9. 设 int x[]={1,2,3,4,5,6},p=x; 则值为 3 的表达式是(B)
    A.p+=2,
    ++p;
    B.p+=2,*p++
    C.p+=3,*p
    D.p+=2,++*p
    解析: *p=x这里指针p指向数组的首元素地址,p+=2则指针指向第三个元素,而a中 ++p是前置加加,p先自增,再解引用,就指向第四个元素了, b中为后置加加,是先解引用再加所以不影响,正确, c中p+=3就错了,因为指向第四个元素了 d中++p,因为p为3,所以就是++3了,结果为4。
  10. 既希望较快的查找又便于线性表动态变化的查找方法是 ( C )
    A.顺序查找
    B.折半查找
    C.索引顺序查找
    D.哈希法查找
    解析:从题目中可以看出数据结构为线性表。
    顺序查找。便于线性表动态变化,但查找平均查找长度为O(n).
    折半查找。平均查找长度O(logn),但由于要求线性表有序,所以不利于动态变化。
    哈希查找。哈希查找时间为O(1),但由于哈希结构依赖于线性表,故不利于线性表动态变化。
    索引顺序查找。当每块元素个数取到sqrt(n)时,平均查找长度最小为sqrt(n)+1。

编程题

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。

猜你喜欢

转载自blog.csdn.net/sl1130398099/article/details/82983630