中国石油大学(华东)软件技术基础复习题 下载本文

内容发布更新时间 : 2024/9/29 22:21:57星期一 下面是文章的全部内容请认真阅读。

线性表的习题

1.下述哪一条是顺序存储结构的优点? C A.插入运算方便

B.可方便地用于各种逻辑结构的存储表示 C.存储密度大 D.删除运算方便

2.下面关于线性表的叙述中,错误的是:B

A.线性表采用顺序存储,必须占用一片连续的存储单元 B.线性表采用顺序存储,便于进行插入和删除操作 C.线性表采用链式存储,不必占用一片连续的存储单元 D.线性表采用链式存储,便于插入和删除操作。

3.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用_______存储方式最节省运算时间。D A.单链表

B.仅有头指针的单循环链表 C.双链表

D.仅有尾指针的单循环链表

4.链表不具有的特点是:B A.插入、删除不需要移动元素 B.可随机访问任一元素 C.不必事先估计存储空间 D.所需空间与线性长度成正比

5.在n个节点的线性表的数组实现中,算法的时间复杂度是O(1) 的操作是:A A.访问第i个结点和求第i个结点的直接前驱 B.在第i个节点后插入一个新节点 O(n) C.删除第i个节点 O(n) D.以上都不对

6.在一个以h为头的单循环链表中,p指针指向链尾的条件是:A A.p->next==h B.p->next==null C.p->next->next==h D.p->data==-1

7.在非空双向循环链表中q所指的结点前插入一个由p所指的链结点的过程依次为: rlink(p)?q; llink(p)?llink(q);llink(q)?p;___________ A. rlink(q)?p; B. rlink(llink(q))?p; C. rlink(llink(p))?p;

D. rlink(rlink(p))?p;

8.在双向链表指针p的结点前插入一个指针q的结点的操作是: A. p->llink=q; q->rlink=p; p->llink->rlink=q; q->llink=q; B.p->llink=q;p->llink->rlink=q; q->rlink=p;q->llink=p->llink; C.q->rlink=p;q->llink=p->llink;p->llink->rlink=q;p->llink=q; D.q->llink=p->llink;q->rlink=q;p->llink=q;p->llink=q;

9.在双向链表存储结构中,删除p所指的结点时需要修改指针_______。 A. p->llink->rlink=p->rlink; p->rlink->llink=p->llink; B. p->llink=p->llink->llink; p->llink->rlink=p;

C. p->rlink->llink=p; p->rlink=p->rlink->rlink; D. p->rlink=p->llink->llink; p->llink=p->rlink->rlink;

填空题

1. 在单链表中设置头结点的作用________________。

2. 链表存储的特点是利用__指针______来表示数据元素之间的逻辑关系;顺序存储的线性

表示用__数组_____来表示数据元素之间的逻辑关系。 3. 循环单链表的最大优点是________________。

4. 带头结点的双循环链表L为空表的条件是___________。L->rlink==L && L->llink==L 5. 带头结点的双向循环链表L中含有一个结点的条件是:

__________________。

6. 线性表L=(a1,a2,…,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个

元素平均需要移动元素的个数是______。(n-1)/2

7. 在一个长度为n的顺序表中第i个元素之前插入一个元素时,需要向后移动________个

元素。n-i+1

栈和队列的习题

2.8 设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5,e6依次通过栈S,一个元素出站后即进入队列Q,若出队的顺序为e2,e4,e3,e6,e5,e1,则栈S的容量至少应该为多少?

E4 E3 E1 解:

2.9 写出计算循环链表长度的算法。

解:设置一个变量len=0;循环编列循环链表,直到链表结束,len++。

2.5 设循环队列的容量为70(序号1-70),现经过一系列的入队与退队运算后,有: (1) front=14,rear=21 (2) front=23,rear=12

问在这两种情况下,循环队列中各有多少个元素? 解:(1)元素个数=21-14=7 (2)元素个数=12+70-23=59

2.6 试用图表示在表达式A*(B-D)/T+C**(E*F)执行过程中运算符栈和操作数栈的变化情况。

E6 E5 E1 栈S的容量至少应该为3。

- ( * ; 运算符栈

D B A * ; 运算符栈

B-D A 操作数栈

操作数栈