数据结构作业解答Word下载.docx
- 文档编号:15713329
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:16
- 大小:65.01KB
数据结构作业解答Word下载.docx
《数据结构作业解答Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构作业解答Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
A.动态结构、静态结构B.顺序结构、链式结构
C.线性结构、非线性结构D.初等结构、构造型结构
8.在下面的程序段中,对x的赋值语句的频度为(D)
FORi:
=1TOnDO
FORj:
=1TOnDO
x:
=x+1;
A.O(2n)B.O(n)C.O(n2)D.O(log2n)
9.程序段FORi:
=n-1DOWNTO1DO
=1TOiDO
IFA[j]>
A[j+1]
THENA[j]与A[j+1]对换;
其中n为正整数,则最后一行的语句频度在最坏情况下是(D)
A.O(n)B.O(nlogn)C.O(n3)D.O(n2)
二、判断题
1.数据元素是数据的最小单位。
(×
)
2.记录是数据处理的最小单位。
(×
3.数据的逻辑结构是指数据的各数据项之间的逻辑关系;
(×
)
4.算法的优劣与算法描述语言无关,但与所用计算机有关。
(√)
5.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。
6.算法可以用不同的语言描述,如果用C语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。
7.程序一定是算法。
8.数据的物理结构是指数据在计算机内的实际存储形式。
9.数据结构的抽象操作的定义与具体实现有关。
10.在顺序存储结构中,有时也存储数据结构中元素之间的关系。
11.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
三、用C语言程序完成三元组的初始化、取i号位上的值及修改i号位上的值。
#include<
stdio.h>
stdlib.h>
#defineok1
#defineerror-1
typedefint*triplet;
typedefintstatus;
statusinit(triplet*t,intv1,intv2,intv3)
{*t=(int*)malloc(3*sizeof(int));
if(!
(*t))returnerror;
(*t)[0]=v1;
(*t)[1]=v2;
(*t)[2]=v3;
returnok;
}
statusget(triplett,inti,int*e)
{if(i<
1||i>
3)returnerror;
*e=t[i-1];
voidmain()
{tripleta;
inti,e,e1,e2,e3;
intb;
printf("
输入三元组的三个值:
"
);
scanf("
%d%d%d"
&
e1,&
e2,&
e3);
b=init(&
a,e1,e2,e3);
if(b==1)printf("
%5d,%5d,%5d\n"
a[0],a[1],a[2]);
elseprintf("
创建三元组失败\n"
输入取得三元组元素的位置:
%d"
i);
b=get(a,i,&
e);
%5d\n"
e);
位置错误\n"
第二章作业
一选择题
1.下述哪一条是顺序存储结构的优点?
(A)
A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示
2.下面关于线性表的叙述中,错误的是哪一个?
(B)
A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用顺序存储,便于进行插入和删除操作。
C.线性表采用链接存储,不必占用一片连续的存储单元。
D.线性表采用链接存储,便于插入和删除操作。
3.线性表是具有n个(C)的有限序列(n>
0)。
A.表元素B.字符C.数据元素D.数据项E.信息项
4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用(A)存储方式最节省时间。
A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表
5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用(D)存储方式最节省运算时间。
A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表
6.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用(D)最节省时间。
A.单链表B.单循环链表C.带尾指针的单循环链表D.带头结点的双循环链表
7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。
则采用(D)存储方式最节省运算时间。
A.单链表B.双链表C.单循环链表D.带头结点的双循环链表
8.静态链表中指针表示的是(C).
A.内存地址B.数组下标C.下一元素地址D.左、右孩子地址
9.链表不具有的特点是(B)
A.插入、删除不需要移动元素B.可随机访问任一元素
C.不必事先估计存储空间D.所需空间与线性长度成正比
10.下面的叙述不正确的是(B,C)
A.线性表在链式存储时,查找第i个元素的时间同i的值成正比
B.线性表在链式存储时,查找第i个元素的时间同i的值无关
C.线性表在顺序存储时,查找第i个元素的时间同i的值成正比
D.线性表在顺序存储时,查找第i个元素的时间同i的值无关
12.
(1)静态链表既有顺序存储的优点,又有动态链表的优点。
所以,它存取表中第i个元素的时间与i无关。
(2)静态链表中能容纳的元素个数的最大数在表定义时就确定了,以后不能增加。
(3)静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。
以上错误的是(B)
A.
(1),
(2)B.
(1)C.
(1),
(2),(3)D.
(2)
13.若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为(C)(1<
=i<
=n+1)。
A.O(0)B.O
(1)C.O(n)D.O(n2)
14.对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为(C)。
A.O(n)O(n)B.O(n)O
(1)C.O
(1)O(n)D.O
(1)O
(1)
15.线性表(a1,a2,…,an)以链接方式存储时,访问第i位置元素的时间复杂性为(C)
A.O(i)B.O
(1)C.O(n)D.O(i-1)
16.非空的循环单链表head的尾结点p满足(A)。
A.p->
link=headB.p->
link=NILLC.p=NILLD.p=head
17.循环链表H的尾结点P的特点是(A)。
A.P^.NEXT:
=HB.P^.NEXT:
=H^.NEXTC.P:
=HD.P:
=H^.NEXT
18.在一个以h为头的单循环链中,p指针指向链尾的条件是(A)
A.p->
next=hB.p->
next=NULLLC.p->
next->
next=hD.p->
data=-1
19.完成在双循环链表结点p之后插入s的操作是(D);
A.p->
next:
=s;
s->
priou:
=p;
p->
=p->
next;
B.p->
next->
=s;
p->
s->
=p->
C.s->
D.s->
二、判断
1.链表中的头结点仅起到标识的作用。
2.顺序存储结构的主要缺点是不利于插入或删除操作。
3.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。
4.顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。
5.对任何数据结构链式存储结构一定优于顺序存储结构。
6.顺序存储方式只能用于存储线性结构。
7.集合与线性表的区别在于是否按关键字排序。
8.所谓静态链表就是一直不发生变化的链表。
9.线性表的特点是每个元素都有一个前驱和一个后继。
10.取线性表的第i个元素的时间同i的大小有关.(×
11.循环链表不是线性表.(×
12.线性表只能用顺序存储结构实现。
13.线性表就是顺序存储的表。
14.为了很方便的插入和删除数据,可以使用双向链表存放数据。
(√)
15.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
16.链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。
(√)
三、编写下列算法:
1、将两个单链表合并成一个单链表。
voidmerge(ListLink&
La,ListLink&
Lb)
{p=La->
while(p->
next){p=p->
}
next=Lb->
free(Lb);
2、有一个有序单链表(从小到大),表头指针为head,编写一个算法向该单链表中插入一个元素值为x的结点,使插入后该链表依然有序。
voidinsert(LinkList&
head,ElemTypex)
{
p=head;
next&
&
p->
next<
x)p=p->
s=(LinkList)malloc(sizeof(LNode));
data=x;
s->
next=p->
next;
next=s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 作业 解答
![提示](https://static.bdocx.com/images/bang_tan.gif)