选择题
公共知识
【1】下列叙述中正确的是〖A〗所谓算法就是计算方法 〖B〗程序可以作为算法的一种描述方法 〖C〗算法设计只需考虑得到计算结果 〖D〗算法设计可以忽略算法的运算时间 算法是指对解题方案的准确而完整的描述, 算法不等于数学上的计算方法, 也不等于程序。算法设计需要考虑可行性、确定性、有穷性与足够的情报, 不能只考虑计算结果。算法设计有穷性是指操作步骤有限且能在有限时间内完成, 如果一个算法执行耗费的时间太长, 即使最终得出了正确结果, 也是没有意义的, 。算法在实现时需要用具体的程序设计语言描述, 所以程序可以作为算法的一种描述方法。
【2】下列叙述中错误的是
〖A〗数据结构中的数据元素可以是另一数据结构 〖B〗数据结构中的数据元素不能是另一数据结构 〖C〗空数据结构可以是线性结构也可以是非线性结构 〖D〗非空数据结构可以没有根结点 数据元素是一个含义很广泛的概念, 它是数据的"基本单位", 在计算机中通常作为一个整体进行考虑和处理。数据元素可以是一个数据也可以是被抽象出的具有一定结构数据集合, 所以数据结构中的数据元素可以是另一数据结构。满足有且只有一个根结点并且每一个结点最多有一个前件, 也最多有一个后件的非空的数据结构认为是线性结构, 不满足条件的结构为非线性结构。空数据结构可以是线性结构也可以是非线性结构。非空数据结构可以没有根结点, 如非性线结构"图"就没有根结点。
【3】13.设数据结构B = (D, R), 其中
D = { a, b, c, d, e, f }
R = { (f, a), (d, b), (e, d), (c, e), (a, c) }
该数据结构为
〖A〗线性结构 〖B〗循环队列 〖C〗循环链表 〖D〗非线性结构 数据的逻辑结构有两个要素 : 一是数据元素的集合, 通常记为D; 二是D上的关系, 它反映了D中各数据元素之间的前后件关系, 通常记为R。即一个数据结构可以表示成B = (D, R)。其中B表示数据结构。为了反映D中各数据元素之间的前后件关系, 一般用二元组来表示。例如, 假设a与b是D中的两个数据, 则二元组(a, b)表示a是b的前件, b是a的后件。本题中R中的根结点为f, 元素顺序为f→a→c→e→d→b, 满足线性结构的条件。
【4】19.设栈的顺序存储空间为S(1 : m), 初始状态为top = 0。现经过一系列正常的入栈与退栈操作后, top = m + 1, 则栈中的元素个数为
〖A〗0 〖B〗m 〖C〗不可能 〖D〗m + 1 栈为空时, 栈顶指针top = 0, 经过入栈和退栈运算, 指针始终指向栈顶元素。初始状态为top = 0, 当栈满时top = m, 无法继续入栈, top值不可能为m + 1。
【5】下列叙述中正确的是
〖A〗循环队列是顺序存储结构 〖B〗循环队列是链式存储结构 〖C〗循环队列空的条件是队头指针与队尾指针相同 〖D〗循环队列的插入运算不会发生溢出现象 循环队列是队列的一种顺序存储结构。在循环队列中, 在队列满和队列为空时, 队头指针与队尾指针均相同; 当需要插入的数据大于循环队列的存储长度, 入队运算会覆盖前面的数据, 发生溢出现象。
【6】设循环队列的存储空间为Q(1 : m), 初始状态为 front = rear = m。经过一系列正常的操作后, front = 1, rear = m。为了在该队列中寻找值最大的元素, 在最坏情况下需要的比较次数为
〖A〗0 〖B〗1 〖C〗m - 2 〖D〗m - 1 该题中1 < m, 即rear - front > 0, 则该循环队列中的元素个数为m - 1。此在该队列中寻找值最大的元素, 在最坏情况下需要的比较次数为m - 1 - 1 = m - 2。