文章目录
C/C++笔试练习
选择部分
(1)二分查找
二分查找的时间复杂度()
A. O(N*log(N))
B. O(N)
C. O(log(N))
D. O(N^2)
答案:C
二分查找是一种在有序数组中查找特定元素的搜索算法。它的工作原理是将数组分为两半,比较中间元素与目标值,如果目标值与中间元素相等,则查找成功;如果目标值小于中间元素,则在左半部分数组中继续查找;如果目标值大于中间元素,则在右半部分数组中继续查找。这个过程会一直重复,直到找到目标值或者搜索区间为空。
二分查找的时间复杂度是 O(log(N)),因为每次查找都将搜索区间减半。
(2)单链表插入
有一个单向链表中有一个A、B两个相邻元素,有一个指针p指向元素A,现将一个指针r指向的S元素要插入到A和B之间,该进行操作()
A. p->next=p->next->next
B. r-next=p;p->next=r->next
C. r->next=p->next;p->next=r
D. r=p->next;->next=r->next
E. r->next=p;p->next=r
F. p=p->next->next
答案:C
单向链表的节点结构是每个节点包含两个部分:数据部分和指向下一个节点的指针部分。考虑将一个指针r指向的S元素插入到A和B之间,我们需要进行以下操作:
1.将r的next指针指向A的下一个节点,即p->next。
2.将A的下一个节点(原本指向B)的next指针指向r。
r->next = p->next; // 第一步
p->next = r; // 第二步
(3)双向链表
双向链表中有两个指针域,llink和rlink分别指向前驱和后继,设p指向链表中的一个结点,现要求删去p所指结点,则正确的删除是()(链中结点数大于2,p不是第一个结点)
A. p->llink->rlink=p->llink; p->llink->rlink=p->rlink; dispose( p);
B. dispose( p); p->llink->rlink=p->llink; p->llink->rlink=p->rlink;
C. p->link->rlink=p->llink; dispose( p); p->llink->rlink=p->rlink;
D. 以上A,B,C都不对
答案:D
双向链表中节点的基本结构:每个节点包含三个部分:数据部分、指向前驱的指针llink、指向后继的指针rlink。当我们要删除一个节点p时,必须考虑以下几点:
1.将p的前驱节点的rlink指针指向p的后继节点,从而跳过p节点。
2.将p的后继节点的llink指针指向p的前驱节点,从而跳过p节点。
3.释放p节点的内存空间。
(4)栈的输出
一个栈的入栈序列是A,B,C,D,E,则栈的不可能输出序列是()
A. EDCBA
B. DECBA
C. DCEAB
D. ABCDE
答案:C
栈是一种线性数据结构,它遵循后进先出(Last In First Out,LIFO)的原则。这意味着后进入栈的元素将是先出来的元素。
(5)循环队列
循环队列放在一维数组A[0…M-1]中,end1指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。初
始时为空,下列判断队空和队满的条件中,正确的是()
A. 队空:end1== end2;队满:end1==(end2+1) mod M
B. 队空:end1== end2;队满:end2==(end1+1) mod (M-1)
C. 队空:end2==(end1+1) mod M;队满:end1==(end2+1) mod M
D. 队空:end1==(end2+1) mod M;队满:end2==(end1+1) mod (M-1)
答案:A
顺序队列的一些操作和判断:
空队列判断条件: rear == front
尾指针的移动方式: rear = (rear+1)%QueueSize
头指针的移动方式: front=(front+1)%QueueSize
判断队列满: front == (rear+1)%QueueSize
(6)二叉树的遍历
已知二叉树后序遍历序列是bfegcda,中序遍历序列是badefcg,它的前序遍历序列是()
A. abcdefg
B. abdcefg
C. adbcfeg
D. abecdfg
答案:B
前序遍历为:abdcefg。
(7)二叉树的性质
某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为()
A. 不存在这样的二叉树
B. 200
C. 198
D. 199
答案:B
完全二叉树有公式:n0=n2+1和n=n0+n1+n2。代入第一个即可得到:n0=200。
(8)哈希表
设有一组记录的关键字为{19,14,23,1,68,20,84,27,55,11,10,79},用链地址法构造哈希表,哈希函数为H(key)=key MOD 13,哈希地址为1的链中有()个记录