数据结构复习(一)
一、单项选择题
( ) 1. 数据的四种基本逻辑结构是指。
A. 链表、数组、串、图状结构
B. 线性表、链表、栈队列、数组
C. 线性结构、链表、树形结构、图形结构
D. 集合、线性结构、树形结构、图状结构
( ) 2 .评价算法的时间复杂性,比较“对数阶量级”与“线性阶量级”,则有。
A . 对数阶量级复杂性大于线性阶量级
B . 对数阶量级复杂性小于线性阶量级
C . 对数阶量级复杂性等于线性阶量级
D . 两者之间无法比较
( ) 3.下面程序段的时间复杂度为 。
for(int i=0; i<m; i++)
for(int j=0; j<n; j++)
a[i][j]=i*j;
A. O(m2) B. O(n2)
C. O(m*n) D. O(m+n)
( ) 4. 评价排序算法好坏的标准主要是。
A.执行时间
B.辅助空间
C.算法本身的复杂度
D.时间复杂度和空间复杂度
( ) 5. 在一个单链表中,若要删除由指针q 所指向结点的后继结点,则执行。
A.p = q->next ; p->next = q->next;
B.p = q->next ; q->next = p;
C.p = q->next ; q->next = p->next;
D.q->next = q->next->next; q->next = q;
( ) 6. 链表不具有的特点是。
A.不必事先估计存储空间
B.插入删除不需要移动元素
C.可随机访问任一元素
D.所需空间与线性表长度成正比
( ) 7. 在单链表中的结点 *p 之后插入一个结点 *s,应执行的语句是。
A.s->next=p->next; p->next=s;
B.p->next=s; s->next=p->next;
C.p->next=s->next; s->next=p;
D.s->next=p; p->next=s->next;
( ) 8. 栈和队列都是。
A.链式存储的线性结构
B.顺序存储的线性结构
C.限制存取位置的线性结构
D.限制存取位置的非线性结构
( ) 9.设一个栈的输入序列为A、B、C、D,则借助一个栈所能得到的输出序列不可能是。
A.ABCD B.DCBA
C.ACDB D.DABC
( ) 10.在下列哪种运算中,使用顺序表比链表好。
A.插入
B.删除
C.根据序号查找 D.根据元素值查找
( ) 11. 带头结点的单链表head为空的判断条件是
A.head= =NULL B.head->next= =NULL
C.head->next=head D.head!=NULL
( ) 12.在需要经常查找结点的前驱与后继的场合中,比较合适的是使用。
A.单链表 B.双链表
C.队列 D.循环链表
( ) 13.关于串的叙述中,正确的是( )
A.空串是含有零个字符或含有空格字符的串
B. 空串是只含有空格字符的串
C. 串是含有一个或多个字符的有穷序列
D. 空串是只含有零个字符的串
( ) 14.若一个串非空,子串的定位操作通常称为。
A. 串的长度 B.原串的子串
C.串的模式匹配 D.串的连接
( ) 16. 设h是指向带头结点的循环链表的头指针,p是辅助指针。执行下述程序段后
p=h;
while (p->next->next!=h)
p=p->next;
p->next=h;
A. p->next 指针指向链尾结点
B. h 指向链尾结点
C. 删除链尾前面的结点
D. 删除链尾结点
二、填空题
1.在链表中进行插入和__删除______操作的效率比在顺序存储结构中进行相同操作的效率高。
2.在一个长度为n的顺序表中删除第i个元素,要移动__n-i_______个元素。
3. 在空串和空格串中,长度不为0的是___空格串______。
4. 某非空双链表,结点中的指针域为 prior 和 next。若要删除指针q所指向的结点,则需执行下述语句段:
q -> prior -> next = q->next ;
___q->next->prior=q->prior;____________________________。
5. 若 head 表示循环链表的头指针,t 表示尾结点,则头指针 head 与 尾结点 t 之间的关系可表示为___t->next=head;______________。
7. 设指针head指向不带头结点的单链表,指针p指向一个新结点。现要将指针p指向的结点插入表中,使之成为第一个结点,则所需的操作为:
p→next=head; 和___head=p;____________。