严蔚敏_数据结构课后习题及答案解析.pdf
《严蔚敏_数据结构课后习题及答案解析.pdf》由会员分享,可在线阅读,更多相关《严蔚敏_数据结构课后习题及答案解析.pdf(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章结论一、选择题1.组成数据的根本单位是(A)数据项 B 数据类型2.数据构造是神究数据的 A 理想构造,糊理构造 C 物理构造,谡辑构造 C 数据元素 D 数据变量以及它111之间的相互关系。B 理想构造,抽象构造 D 抽象构造,谡辑构造3.在数据构造中,从谡辑上可以把数据构造分成 A 前态构造和静态构造 B 紧凑构造和非紧凑构造(C)线性构造和非线性构造 D 内部构造和外部构造4.数据构造是一门物究非数值计算的程序设计问题中计算机的 以及它111之间的 和运算等的学科。A 数据元素 B 计算方法 C 遐辑存用 D 数据映像 A 构 造 B 关 系 C 运 算 D 算法5.算法分析的目的
2、是。(A)找出数据构造的合理性 B 的究算法中的输入和输出的关系(C)分析算法的效率以求改良 D 分析算法的易懂性和文档性6.计算机算法指的是 ,它必须具备输入、输出和 等 5 个特性。A 计算方法 B 排序方法 C 解决问髭的有限运算序则 D 调度方法 A 可执行性、可移植性和可技大性 B 可行性、确定性和有穷性 C 确定性、有 穷 性 和 稳 定 性 D 易读性、稳定性和平安性二、判断题1.数据的机内表示称为数据的存俯构造。2.算法就是程序。3.数据元素是数据的最小单位。4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。5.算法的时间复杂度取决于问题的规模和特处理数据的初态。三、填
3、空题1.数据谡辑构造包括_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 和_ _ _ _ _ _ _ _ _ _ _ 四种类型,其中机形构造和图形构造合称为_ _ _ _ _O2.在线性构造中,第一个结点_前驱结点,其余每个结点有且只有_ _ _ _ 个前驱结点;最后一个结点_ _ _ _ _ _ 后续结点,其余每个结点有且只有_ _ _ _ _ _ _个后续结点。3.在树形构造中,树根结点没有_ _ _ _ _ _ 结点,其余每个结点有且只有_ _ _ _ _ _ _个前驱结点;叶子结点没有_ _ _ _ _ _ _ _结点
4、,其余每个结点的后续结点可以_ _ _ _ _ _ _ _ _ _O4.在图形构造中,每个结点的前驱结点数和后续结点数可以_ _ _ _ _ _ _ _o5.线性构造中元素之间存在_ _ _ _ _ _ _ 关系,树形构造中元素之间存在_ _ _ _ _ _关系,图形构造中元素之间存在_ _ _ _ _ _ _ 关系。6.算法的五个重要特性是_ _ _ _ _ _、_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _、_ _ _ _ _ _ _o7.数据构造的三要素是指_ _ _ _ _ _ _ _ _ _ _ _和_ _ _ _ _ _ _ _ _o8.链式
5、存储构造与顺序存储构造相比抵,主要优点是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _o9.段有一批数据元素,为了最快的存慌某元素,数据构造宜用 构造,为了方便插入一个元素,数据构造宜用_ _ _ _ _ _ _ _ _ _ _ _ _ 构造。四、算法分析题1.求以下算法段的语句颛度及时间复杂度参考答案:一、选择题1.C 2.C 3.C 4.A、B 5.C 6.C、B二、判断题:1 s V 2 x 3、x 4、x 5、,三、填空题1、线性、树形、图形、集合?;非爱性网状 2、没有;1;没有;13、前驱;1;后继
6、;任 意 多 个 4、任 意 多 个 5、一对一;一对多;多对多6、有穷性;确定性;可行性;输入;输 出7、数据元素;遢辑构造;存储 构 造8、插入、删除、合并等操作较方便9、颗序存第;链式存储四、算法分析题for(i=1;i=n;i+)for(j=1;j=i;j+)x=x+1;分析:该算法为一个二重循环,执行次数为内、外循环次数相乘,但内循环次数不固定,与外储环有关,因些,时间颛度T(n)=1+2+3+n=n*(n+1)/2有1/4&T(n)/n 2 w 1,故它的时间复杂度为0(n 2),即T(n)与n 2数量级一样。2、分析以下算法段的时间频度及时间复杂度for(i=1;i=n;i+fo
7、r(j=1;j=i;j+)for(k=1;knext=p;p-next=s;B s-next=p-next;p-next=s;(C )s-next=p-next;p=s;(D p-next=s;s-next=p;5.在一个单旌表中,假段删除p所指结点的后续结点,那么执行(A)p-next=p-next-next;Bp=p-next;p-next=p-next-next;Cp-next=p-next;Dp=p-next-next;6/下有关线性表的表达中,正确的选项是(A)线性表中的元素之间隔是线性关系B线性表中至少有一个元素C线性表中任何一个元素有且仅有一个直接前起(D)线性表中任何一个元素有
8、且仅有一个直接后继7.线性表是具有n个 的有限序列 n#0)A表 元 素 B字 符 C数据元素 D数据项二、刿断题1.线性表的存储,表中元素的谡相顺序与物理颗序一定一样。2.如果没有提供指针类型的语言,就无法构造盘式构造。3.线性构造的特点是只有一个结点没有前驱,只有一个结点没有后继,其余的结点只有一个前驱和后继。4.话句p=p-next完成了指针赋值并使p指针得到了 p指针所指后继结点的数据帧值。5.要想删除p指针的后继结点,我|应该执行q=p-next;p-next=q-next;free(q)o 三、填空题1.P为单曲表中的非首尾结点,在P结点后插入S结点的诘句为:_ _ _ _ _ _
9、 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _。2书序表中遗辑上相邻的元素物理位置()相邻,单链表中遢辑上相邻的元素枷理位置_ _ _ _ _ _ _ _ _相邻。3.线性表L=(a1,a2,an采用顺序存情,假定在不同的n+1个位置上插入的概率一样,那么插入一个新元素平均需要移现的元素个数是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _4.在非空双向循环艇表中,在结点q的前面插入结点P的过程如下:p-prior=q-prior;q-prior-next=p;p-next=q;5.L是无表头结点的单链表,是从以下提供
10、的答案中选择适宜的语句序列,分刖实现:1 表尾插入S结点的语句序列是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _(2)表 尾 插 入s结点的语句序列是_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _1.p-next=s;2.p=L;3.L=s;4.p-next=s-next;5.s-next=p-next;6.s-next=L;7.s-next=null;8.while(p-next!=Q)?p=p-next;9.while(p
11、-next!=null)p=p-next;四、算法设计题1.试编写一个求单簿表的数据域的平均值的函数数据域数据类型为整型。2.带有头结点的储环鞋表中头指针为head,试写出删除并释放数据域值为x的所有结点的ci5数。3.某百货公司仓库中有一批电视机,按其价格从低到高的次序构成一个指环旌表,每个结点有价格、数量和捱指针三个域。现出库销售m台价格为h的电视机,试编写算法修改原捱表。4.某百货公司仓库中有一批电视机,报其价格从低到高的次序构成一个脩环旌表,每个结点有价格、数量和抵指针三个域。现新到m台价格为h的电视机,试编写算法修改原隹表。5.线性表中的元素值按递增有序排列,针对即序表和脩环越表两种
12、不同的存储方式,分别编写C函数删除线性表中值介于a与b a v b之间的元素。6.设A=(a0,a1,a2,,an-1),B=(bO,b1,b2.b m-1)t两个给定的线性表,它们的结点个数分别是n和m,且结点值均是整数。假设 n=m,且 ai=bi 0 in),那么 A=B;假设 nm,且 ai=bi 0 in,那么 AB;假段存在一个j,km,jn,且ai=bi 0 ij,假设a j b j,那么A BO试编写一个比拟A和B的C函数,该函数返回-1或0或1 ,分 别 表 示ABO7.试编写算法,删除双向循环於表中第k个结点。8.线性表由前后两局部性质不同的元素组(aO,a1.an-1,b
13、O,b1,,bm-1),m和n为两局部元素的个数,假设线性表分别采用数组和范表两仲方式存储,编写算法将两局部元素换位成(bO.bl.bm-1,aO,a1.an-1),5i 两种存储方式下算法的时间和空间复杂存。9.用循环用表作线性表(aO,a1,,an-1)和 bO,b1,,bm-1的存储构造,头指针分别为a h和bh,设计C函数,把两个线性表合并成形如aO,bO,a1,b1,的线性表,要求不开辟新的动态空同,利用原来循环能表的结点完成合并操作,构造仍为循环胜表,头指针为head,并分析算法的时间复杂度。10.试写出将一个线性表分解为两个带有头结点的循环捱表,并将两个他环锥表的长度放在各自的头
14、结点的数据域中的C函数。其中,线性表中序号为偶数的元素分解到第一个僻环I起表中,序号为奇数的元素分解到第二个循环隹表中。11.写出把线性曲表改为I I环箝表的c函数。12.己知非空我性链表中x结点的直接前驱结点为y,试写出删除x结点的C函数。参考答案:一、选择题1.B 2.C 3.D 4.B 5.A 6.A 7、C二、判断题:参考答案:1、x 2、,3、x 4、x 5、V三、填空题1、s-next=p-next;p-next=s;2,一定;不一定 3、n/2 4、q-prior=p;5、(1)6)3)2)9)1)7)四、算法设计题1、#include stdio.h#include mallo
15、c.htypedef struct nodeint data;struct node*link;NODE;int aver(NODE*head)int i=0,sum=0,ave;NODE*p;p=head;while(p!=NULL)p=p-link;+i;sum=sum+p-data;ave=sum/i;return(ave);)2、#include stdio.h#include malloc.htypedef struct nodeint data;/*假设数据域为整型*/struct node*link;INODE;void del_link(NODE*head,int x)/*删除
16、数据域为 x 的结点*/NODE*p,*q,*s;p=head;q=head-link;while(q!=head)if(q-data=x)!p-link=q-link;s=q;q=q-link;free(s);elseP=q;q=q-link;3、void del(NODE*head,float price,int num)!NODE*p,*q,*s;p=head;q=head-next;while(q-pricenext;if(q-price=price)q-num=q-num-num;elseprintf(无此产品)if(q-num=0)!p-next=q-next;free(q);4、
17、#include stdio.h#include malloc.htypedef struct nodefloat price;int num;struct node*next;!N0DE;void ins(NODE*head,float price,int num)!NODE*p,*q,*s;p=head;q=head-next;while(q-pricenext;if(q-price=price)q-num=q-num+num;elses=(NODE*)malloc(sizeof(NODE);s-price=price;s-num=num;s-next=p-next;p-next=s;5、
18、5序表:算法思想:从0开场打描线性表,用k记录下元素值在a与b之间的元素个数,对于不满足该条件的元素,前移k个位置,最后修改线性表的长度。void del elemtype list,int*n,elemtype a,elemtype b)int i=0,k=0;while(i=a&listilink;/*假设循环捱表带有头结点*/while(q!=head&q-datalink;while(q!=head&q-datalink;free(r);if(p!=q)p-link=q;6、#define MAXSIZE 100int listAMAXSIZE,listBMAXSIZE;int n,m
19、;int pare(int a,int b)int i=0;while(ai=bi&in&im)i+;if(n=m&i=n)return(O);if(nm&i=m)return(1);if(in&im)if(aibi)return(1);7、void del(DUNODE*head,int i)DUNODE*p;if(i=O)(*head=*head-next;*head-prior=NULL;return(O);Elsefor(j=0;jnext;if(p=NULL|ji)return;p-prior-next=p-next;p-next-prior=p-proir;free(p);retu
20、rn(O);8.序存储:void convert(elemtype list,int l,int h)/*将数组中第 I 个到第 h 个元素逆置*/int i;elemtype temp;for(i=h;i=(l+h)/2;i+)temp=listi;listi=listl+h-i;listl+h-i=temp;void exchange(elemtype list,int n,int m);convert(list,0,n+m-1);convert(list,0,m-1);convert(list,m,n+m-1);I该算法的时间复杂度为0(n+m),空间复杂度为0(1)存储:(不带头结点的
21、单附表)typedef struct node(elemtype data;struct node*link;NODE;void convert(NODE*head,int n,int m)NODE*p,*q,*r;int i;p=*head;q=*head;for(i=0;ilink;/*q 指向 an-1 结点*/r=q-link;q-link=NULL;while(r-link!=NULL)r=r-link;/*r指向最后一个bm-1结 点*/*head=q;r-link=p;该算法的时间复杂度为0(n+m),但比顺序存曲节省时间(不需要移动元素,只需改变指针),空间复杂度为0(1)9.
22、typedef struct nodeelemtype data;struct node*link;INODE;NODE*union(NODE*ah,NODE*bh)NODE*a,*b,*head,*r,*q;head=ah;a=ah;b=bh;while(a-link!=ah&b-link!=bh)r=a-link;q=b-link;a-link=b;b-link=r;a=r;b=q;if(a-link=ah)/*a的结点个数小于等于b的 结 点 个 数*1a-link=b;while(b-link!=bh)b=b-link;b-link=head;if(b-link=bh)/*b的结点个数
23、小于a的 结 点 个 数*/r=a-link;a-link=b;b-link=r;)return(head);该算法的时间复杂度为0(n+m),其中n f llm为两个指环旌表的结点个数.10.typedef struct node(elemtype data;struct node*link;NODE;void analyze(NODE*aNODE*rh,*qh,*r,*q,*p;int i=0,j=0;/*i为序号是奇数的结点个数j为序号是偶数的结点个数*/P=a;rh=NODE*malloc sizeof N O D E);/*rh 为序号是奇数的胜表头指针*/qh=(NODE*)mal
24、loc(sizeof(NODE);/*qh 为序号是偶数的链表头指针*/r=rh;q=qh;while(p!=NULL)r-link=p;r=P;i+;p=p-link;if(p!=NULL)q-link=p;q=P;j+;p=p-link;rh-data=i;r-link=rh;qh-data=j;q-link=qh;11.typedef struct nodeelemtype data;struct node*link;NODE;void change(NODE*head)NODE*p;p=head;if(head!=NULL)while(p-link!=NULL)p=p-link;p-l
25、ink=head;12.typedef struct nodeelemtype data;struct node*link;NODE;void del(NODE*x,NODE*y)NODE*p,*q;elemtype d1;P=y;q=x;while(q-next!=NULL)/*把后一个结点数据域前移到前一个结点*/p-data=q-data;q=q-link;P=q;p-link=NULL;/*删除最后一个结点*/free(q);第三章我和队列一、选择题1.一个枝的入枝序列是a,b,c,d,e,那么枝的不可能的输出序列是。Aedcba Bdecba Cdceab Dabcde2.我构造通常
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 严蔚敏 数据结构 课后 习题 答案 解析
限制150内