一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是( ) 。
A.edcba
B.decba
C.dceab
D.abcde
答案:C
解析:
若已知一个栈的入栈序列是1,2,3,4……n,其输出序列为p1,p2,p3,……pn,若p1= =n,则pi为( )。
A.i
B.n= =i
C.n-i+1
D.不确定
答案:C
解析:
链式栈与顺序栈相比,一个比较明显的优点是( )。
A.插入操作更加方便
B.通常不会出现栈满的情况
C.不会出现栈空的情况
D.删除操作更加方便
答案:B
解析:链式栈是通过链表来实现栈的,结点空间是动态生成的,因此只要能在内存申请空间就不会出现栈满的情况。
顺序栈S中top为栈顶指针,指向栈顶元素所在的位置,elem为存放栈的数组,则元素e进栈操作的主要语句为( )。
A.s.elem[top]=e; s.top=s.top+1;
B.s.elem[top+1]=e;s.top=s.top+1;
C.s.top=s.top+1; s.elem[top+1]=e;
D.s.top=s.top+1;s.elem[top]=e;
答案:D
解析:
某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存储方式最节省运算时间。
A.单链表
B.仅有头指针的单循环链表
C.双链表
D.仅有尾指针的单循环链表
答案:D
解析:最常用的操作是最后一个元素之后插入一个元素和删除第一个元素,则采用尾指针的单循环链表。
若不带头结点的单链表的头指针为head,则该链表为空的判定条件是( )。
A.head==NULL
B.head->next==NULL
C.head!=NULL
D.head->next==head
答案:A
解析:
在不带头结点的单链表中,判断链表是否为空通常是通过检查头指针是否为空。如果头指针 head 为 NULL,则说明链表为空。
因此,正确的判定条件是:
A. head==NULL
采用顺序搜索方法查找长度为n的顺序表示,搜索成功的平均搜索长度为( )。
A.n
B.n/2
C.(n-1)/2
D. (n+1)/2
答案:D
解析:
在长度为n的顺序表中删除第i个元素(1≤i≤n)时,元素移动的次数为( )。
A.n-i+1
B.i
C.i+1
D.n-i
答案:D
解析:
链表不具有的特点是( ) 。
A.插入、删除不需要移动元素
B.可随机访问任一元素
C.不必事先估计存储空间
D.所需空间与线性长度成正比
答案:B
解析:
链表的特点包括插入和删除操作不需要移动其他元素、不必事先估计存储空间,而且所需空间与线性长度成正比。然而,链表不支持随机访问,因为要访问链表中的某个元素,通常需要从头节点开始逐个遍历直到找到该元素。
因此,链表不具有的特点是:
B. 可随机访问任一元素
堆是一种( )排序。
A.插入
B.选择
C.交换
D.归并
答案:B
解析:
堆是一种基于完全二叉树的数据结构,用于实现堆排序算法。堆排序是一种选择排序算法,因为它通过构建最大堆(或最小堆)并逐步选择堆顶元素来排序数据。
因此,堆是一种:
B. 选择 排序