江南大学本科生数据结构题库答案 江大英才 QQ707697898
{
for(j=n;j>i-1; j--)
for(k=1;k
江南大学本科生数据结构题库答案 江大英才 QQ707697898
语句频度=1+2+…+n=
)1
。
( nn
2
⑵i=0;
j=1;
while (i+j<=n){
x++;
if (i>j) j++;
else i++;
}
参考答案:
i 与 j 初始和为 1,其后每循环一次,i 和 j 中有且仅有一个值增 1,即 i 与 j 的和增 1。由于循环条件
为 i+j<=n,因此循环共执行 n 次。
语句频度=n。
⑶for (i=1;i<=n;i++)
for (j=1;j<=i;j++)
for (k=1;k<=n;k++)
x++;
参考答案:
语句频度=
)1
nn
(2
2
。
n 。
⑷x=0;y=n; //n 是不小于 1 的常数
while (y>=(x+1)*(x+1)){
x++;
}
参考答案:
语句频度=
⑸设n为正整数,试确定如下程序段中 if 语句的频度。
x=91;
y=100;
while(y>0){
if (x>100){x-=10;y--;}
else x++;
}
参考答案:
语句频度=1100
本资料由江南大学研究生 QQ707697898 搜集和整理,其他均属倒卖资料
江南大学本科生数据结构题库答案 江大英才 QQ707697898
第二课 线性表
一 选择题
1.下列属顺序存储结构优点的是( )。
A.存储密度大 B.插入运算方便 C.删除运算方便 D.可方便地用于各种逻辑结构的存储表示
参考答案:A
2.下列关于线性表的叙述中,错误的是( )。
A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用顺序存储,便于进行插入和删除操作。
C.线性表采用链接存储,不必占用一片连续的存储单元。
D.线性表采用链接存储,便于插入和删除操作。
参考答案:B
3.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( )
存储方式最节省时间。
A.顺序表 B.双链表 C.带头结点的双循环链表 D.单循环链表
参考答案:A
4.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( )存
储方式最节省运算时间。
A.单链表 B.仅有头指针的单循环链表 C.双链表 D.仅有尾指针的单循环链表
参考答案:D
5.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用( )存储
方式最节省运算时间。
A.单链表 B.双链表 C.带尾指针的单循环链表 D.带头结点的双循环链表
参考答案:D
6.静态链表中指针表示的是( )。
A.下一元素的地址 B.内存储器的地址
C.下一元素在数组中的位置 D.左链或右链指向的元素的地址
参考答案:C
7.链表不具有的特点是( )。
A.插入、删除不需要移动元素 B.可随机访问任一元素
C.不必事先估计存储空间 D.所需空间与线性长度成正比
参考答案:B
8.双向链表中有两个指针域,llink 和 rlink 分别指向前趋及后继,设 p 指向链表中的一个结点,现要求删
去 p 所指结点,则正确的删除是( )(链中结点数大于 2,p 不是第一个结点)。
A.p->llink->rlink=p->llink; p->llink->rlink=p->rlink; free(p);
B.free (p); p->llink->rlink=p->llink; p->llink->rlink=p->rlink;
C.p->llink->rlink=p->llink; free (p); p->llink->rlink=p->rlink;
D.以上 A,B,C 都不对。
参考答案:D
本资料由江南大学研究生 QQ707697898 搜集和整理,其他均属倒卖资料
江南大学本科生数据结构题库答案 江大英才 QQ707697898
9.下列说法错误的是( )。
⑴静态链表既有顺序存储的优点,又有动态链表的优点。所以,它存取表中第 i 个元素的时间与 i 无关。
⑵静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加。
⑶静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。
A.⑴和⑵ B.⑴ C.⑴、⑵和⑶ D.⑵
参考答案:B
10.若长度为 n 的线性表采用顺序存储结构,在其第 i 个位置插入一个新元素的算法的时间复杂度为( )
(1<=i<=n+1)。
A.O(0) B.O(1) C.O(n) D.O(n2)
参考答案:C
11.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为( )。
A.O(n) O(n) B.O(n) O(1) C.O(1) O(n) D.O(1) O(1)
参考答案:C
12.线性表(a1,a2,…,an)以链接方式存储时,访问第 i 位置元素的时间复杂性为( )。
A.O(i) B.O(1) C.O(n) D.O(i-1)
参考答案:C
13.在一个以 h 为头的单循环链中,p 指针指向链尾的条件是( )。
A.p->next=h B.p->next=NULL C.p->next->next=h D.p->data=-1
参考答案:A
14.双向链表中有两个指针域,llink 和 rlink,分别指回前驱及后继,设 p 指向链表中的一个结点,q 指向
一待插入结点,现要求在 p 前插入 q,则正确的插入为( )。
A.p->llink=q; q->rlink=p; p->llink->rlink=q; q->llink=p->llink;
B.q->llink=p->llink; p->llink->rlink=q; q->rlink=p; p->llink=q->rlink;
C.q->rlink=p; p->rlink=q; p->llink->rlink=q; q->rlink=p;
D.p->llink->rlink=q; q->rlink=p; q->llink=p->llink; p->llink=q;
参考答案:D
15.对于一个头指针为 head 的带头结点的单链表,判定该表为空表的条件是( )。
A.head==NULL B.head→next==NULL C.head→next==head D.head!=NULL
参考答案:B
二、应用题
1.有线性表(a1,a2,…,an),采用单链表存储,头指针为 H,每个结点中存放线性表中一个元素,现查
找某个元素值等于 X 的结点。分别写出下面三种情况的查找语句,要求时间尽量少。⑴线性表中元素无序。
⑵线性表中元素按递增有序。⑶线性表中元素按递减有序。
参考答案:
设单链表带头结点,工作指针 p 初始化为 p=H->next;
⑴
while(p!=null && p->data!=X) p=p->next;
if(p= =null) return(null);∥查找失败
本资料由江南大学研究生 QQ707697898 搜集和整理,其他均属倒卖资料
江南大学本科生数据结构题库答案 江大英才 QQ707697898
else return(p);∥查找成功
⑵
while(p!=null && p->datanext;
if(p==null || p->data>X) return(null);∥查找失败
else return(p);
⑶
while(p!=null && p->data>X) p=p->next;
if(p==null || p->datanext=p->prior-> next;
p-> prior =p-> next -> prior;
free(p);
参考答案:
前两个语句改为:
p-> prior ->next= p-> next;
p-> next -> prior = p-> prior;
⑵下面的算法描述片段用于在双链表中指针变量 p 所指结点后插入一个新结点:
q=(dlinklist *)malloc(sizeof(dlinklist));
q-> prior =p;
p-> next =q;
q-> next =p-> next;
q = p-> next -> prior;
参考答案:
后三个语句序列应改为:
q-> next =p-> next;
p-> next -> prior =q;
p-> next =q;
3.一线性表存储在带头结点的双向循环链表中,L 为头指针。如下算法:
void unknown (Dlinklist *L)
{ …
p=L->next; q=p->next; r=q->next;
while (q!=L)
{ while (p!=L) && (p->data>q->data) p=p->prior;
q->prior->next=r;
① ______;
q->next=p->next;
q->prior=p;
② ______;
③ ______;
q=r;p=q->prior;
④ ______;
本资料由江南大学研究生 QQ707697898 搜集和整理,其他均属倒卖资料
江南大学本科生数据结构题库答案 江大英才 QQ707697898
}
}
⑴说明该算法的功能。
参考答案:
本算法功能是将双向循环链表结点的数据域按值自小到大排序,成为非递减(可能包括数据域值相等
的结点)有序双向循环链表。
⑵在空缺处填写相应的语句。
参考答案:
①r->prior=q->prior;∥将 q 结点摘下,以便插入到适当位置。
②p->next->prior=q;∥⑵⑶将 q 结点插入
③p->next=q;
④r=r->next;或 r=q->next;∥后移指针,再将新结点插入到适当位置。
4.设单链表 L 带头结点且非空,指针变量 p 指向 L 中的一个结点,且该结点既不是 L 中的第一个结点,
也不是 L 中的最后一个结点,指针变量 s 指向一个待插入 L 的新结点。试选择合适的语句序列,完成下列
操作。
⑴在 p 所指结点之前插入 s 所指结点;
⑵在 L 中最后一个结点之后插入 s 所指结点;
⑶删除 p 所指结点的直接后继;
⑷删除 L 中第一个结点。
参考答案:
⑴q=L;
while(q->next!=p)q=q->next; //q 指向 p 的直接前驱
s->next=p;
q->next=s;
或者
s->next=p->next; p->next=s;
datatype x;
x=p->data;
p->data=s->data;
s->data=x;
⑵q=L;
while(q->next)q=q->next;
s->next=NULL;
q->next=s;
⑶q=p->next; //q 指向待删结点
p->next=q->next;
free(q);
⑷q=L->next;
L->next=q->next;
free(q);
三、算法设计题
1.顺序结构线性表 LA 与 LB 的结点关键字为整数。LA 与 LB 的元素按非递减有序,线性表空间足够大。
本资料由江南大学研究生 QQ707697898 搜集和整理,其他均属倒卖资料