1、数据结构作业解答第一章作业一、选择题1. 算法的计算量的大小称为计算的( B )。A效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于( A)A问题的规模 B. 待处理数据的初态 C. A和B3.计算机算法指的是(C),它必须具备(B) 这三个特性。(1) A计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法(2) A可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 4一个算法应该是( B )。 A程序 B问题求解步骤的描述 C要满足五个基本特性 DA和C. 5. 下面关于算法说法错误的
2、是( D )A算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的6. 下面说法错误的是( C ) (1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法 (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A(1) B.(1),(2) C.(1),(4) D.(3)7从逻辑上可以把数据结构分为( C )两大类。A动态结构、静态结构 B顺序结构、链式结构
3、C线性结构、非线性结构 D初等结构、构造型结构8在下面的程序段中,对x的赋值语句的频度为( D )FOR i:=1 TO n DO FOR j:=1 TO n DO x:=x+1;A O(2n) BO(n) CO(n2) DO(log2n) 9程序段 FOR i:=n-1 DOWNTO 1 DO FOR j:=1 TO i DO IF AjAj+1 THEN Aj与Aj+1对换;其中 n为正整数,则最后一行的语句频度在最坏情况下是(D )A. O(n) B. O(nlogn) C. O(n3) D. O(n2) 二、判断题1. 数据元素是数据的最小单位。( ) 2. 记录是数据处理的最小单位。
4、 ( ) 3. 数据的逻辑结构是指数据的各数据项之间的逻辑关系;( )4算法的优劣与算法描述语言无关,但与所用计算机有关。( )5健壮的算法不会因非法的输入数据而出现莫名其妙的状态。( )6算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。( ) 7程序一定是算法。( ) 8数据的物理结构是指数据在计算机内的实际存储形式。( )9. 数据结构的抽象操作的定义与具体实现有关。( ) 10. 在顺序存储结构中,有时也存储数据结构中元素之间的关系。( )11. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( )三、用C语言程序完成三元组的
5、初始化、取i号位上的值及修改i号位上的值。#include#include#define ok 1#define error -1typedef int *triplet;typedef int status;status init(triplet *t,int v1,int v2,int v3)*t=(int *)malloc(3*sizeof(int); if (!(*t) return error;(*t)0=v1; (*t)1=v2; (*t)2=v3; return ok; status get(triplet t,int i,int *e) if(i3) return error;
6、 *e=ti-1 ; return ok; void main() triplet a; int i,e,e1,e2,e3;int b; printf(输入三元组的三个值:); scanf(%d%d%d,&e1,&e2,&e3); b=init(&a,e1,e2,e3); if(b=1) printf(%5d,%5d,%5dn,a0,a1,a2); else printf(创建三元组失败n); printf(输入取得三元组元素的位置:); scanf(%d,&i); b=get(a,i,&e); if(b=1) printf(%5dn ,e); else printf(位置错误n); 第二章作
7、业一 选择题1下述哪一条是顺序存储结构的优点?( A )A存储密度大 B插入运算方便 C删除运算方便 D可方便地用于各种逻辑结构的存储表示2下面关于线性表的叙述中,错误的是哪一个?( B )A线性表采用顺序存储,必须占用一片连续的存储单元。B线性表采用顺序存储,便于进行插入和删除操作。C线性表采用链接存储,不必占用一片连续的存储单元。D线性表采用链接存储,便于插入和删除操作。3线性表是具有n个( C )的有限序列(n0)。 A表元素 B字符 C数据元素 D数据项 E信息项4若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( A )存储方式最节省时间。A顺序表 B
8、双链表 C带头结点的双循环链表 D单循环链表5某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。A单链表 B仅有头指针的单循环链表 C双链表 D仅有尾指针的单循环链表6设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( D )最节省时间。A. 单链表 B.单循环链表 C. 带尾指针的单循环链表 D.带头结点的双循环链表7若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。则采用( D )存储方式最节省运算时间。A单链表 B双链表 C单循环链表 D带头结点的双循环链表8. 静态链表中指针表示的是( C ).
9、 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) 静态链表中能
10、容纳的元素个数的最大数在表定义时就确定了,以后不能增加。 (3) 静态链表与动态链表在元素的插入、删除上类似,不需做元素的移动。以上错误的是( B ) A(1),(2) B(1) C(1),(2),(3) D.(2)13. 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为( C )(1=ilink=head Bp-link=NILL Cp=NILL Dp= head17循环链表H的尾结点P的特点是(A )。 AP.NEXT:=H BP.NEXT:= H.NEXT CP:=H DP:=H.NEXT18在一个以 h 为头的单循环链中,p 指针指向链尾的条件是(A
11、) A. p-next=h B. p-next=NULLL C. p-next-next=h D. p-data=-119完成在双循环链表结点p之后插入s的操作是( D ); A p-next:=s ; s-priou:=p; p-next-priou:=s ; s-next:=p-next;B p -next -priou:=s; p -next:=s; s -priou:=p; s -next:= p-next;C s -priou:=p; s -next:=p-next; p-next:=s; p-next-priou:=s ;D s-priou:=p; s-next:=p-next;
12、p-next-priou:=s ; p-next:=s;二、判断1. 链表中的头结点仅起到标识的作用。( )2. 顺序存储结构的主要缺点是不利于插入或删除操作。( ) 3线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。( )4顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。( )5. 对任何数据结构链式存储结构一定优于顺序存储结构。( ) 6顺序存储方式只能用于存储线性结构。( )7集合与线性表的区别在于是否按关键字排序。( ) 8. 所谓静态链表就是一直不发生变化的链表。( ) 9. 线性表的特点是每个元素都有一个前驱和一个后继。( )10. 取线性表的第i个元素的
13、时间同i的大小有关. ( ) 11. 循环链表不是线性表. ( ) 12. 线性表只能用顺序存储结构实现。( ) 13. 线性表就是顺序存储的表。( ) 14为了很方便的插入和删除数据,可以使用双向链表存放数据。( )15. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。( ) 16. 链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。 ( ) 三、编写下列算法:1、 将两个单链表合并成一个单链表。 void merge(ListLink &La,ListLink &Lb)p=La-next; while(p-next) p=p-next; p-next=Lb-next; free(Lb);2、 有一个有序单链表(从小到大),表头指针为head,编写一个算法向该单链表中插入一个元素值为x的结点,使插入后该链表依然有序。void insert(LinkList &head, ElemType x) p=head; while(p-next &p-nextnext; s= ( LinkList ) malloc( sizeof ( LNode ) ; s-data=x; s-next= p-next ; p-next =s
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1