严蔚敏数据结构课后习题及答案解析

第一章绪论

一、选择题

1.组成数据的基本单位是

A数据项B数据类型C数据元素D数据变量

2.数据结构是研究数据的以及它们之间的相互关系;

A理想结构,物理结构B理想结构,抽象结构

C物理结构,逻辑结构D抽象结构,逻辑结构

3.在数据结构中,从逻辑上可以把数据结构分成

A动态结构和静态结构B紧凑结构和非紧凑结构

C线性结构和非线性结构D内部结构和外部结构

4.数据结构是一门研究非数值计算的程序设计问题中计算机的①以及它们之间的②和运算等的学科;

① A数据元素B计算方法C逻辑存储D数据映像

② A结构B关系C运算D算法

5.算法分析的目的是;

A 找出数据结构的合理性B研究算法中的输入和输出的关系

C分析算法的效率以求改进D分析算法的易懂性和文档性

6.计算机算法指的是①,它必须具备输入、输出和②等5个特性;

① A计算方法B排序方法C解决问题的有限运算序列D调度方法

② A可执行性、可移植性和可扩充性B可行性、确定性和有穷性

C确定性、有穷性和稳定性D易读性、稳定性和安全性

二、判断题

1.数据的机内表示称为数据的存储结构;

2.算法就是程序;

3.数据元素是数据的最小单位;

4.算法的五个特性为:有穷性、输入、输出、完成性和确定性;

5.算法的时间复杂度取决于问题的规模和待处理数据的初态;

三、填空题

1.数据逻辑结构包括________、________、_________ 和_________四种类型,其中树形结构和图形结构合称为_____;

2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______个前驱结点;最后一个结点______后续结点,其余每个结点有且只有_______个后续结点;

3.在树形结构中,树根结点没有_______结点,其余每个结点有且只有_______个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以_________;

4.在图形结构中,每个结点的前驱结点数和后续结点数可以_________;

5.线性结构中元素之间存在________关系,树形结构中元素之间存在______关系,图形结构中元素之间存在_______关系;

6.算法的五个重要特性是_______、_______、______、_______、_______;

7.数据结构的三要素是指______、_______和________;

8.链式存储结构与顺序存储结构相比较,主要优点是________________________________;

9.设有一批数据元素,为了最快的存储某元素,数据结构宜用_________结构,为了方便插入一个元素,数据结构宜用____________结构;

四、算法分析题

1.求下列算法段的语句频度及时间复杂度

参考答案:

一、选择题

1. C 3. C 4. A、B 5. C 、B

二、判断题:

1、√

2、×

3、×

4、×

5、√

三、填空题

1、线性、树形、图形、集合;非线性网状

2、没有;1;没有;1

3、前驱;1;后继;任意多个

4、任意多个

5、一对一;一对多;多对多

6、有穷性;确定性;可行性;输入;输出

7、数据元素;逻辑结构;存储结构

8、插入、删除、合并等操作较方便

9、顺序存储;链式存储

四、算法分析题

fori=1; i<=n; i++

forj =1; j <=i ; j++

x=x+1;

分析:该算法为一个二重循环,执行次数为内、外循环次数相乘,但内循环次数不固定,与外循环有关,因些,时间频度Tn=1+2+3+…+n=nn+1/2

有1/4≤Tn/n2≤1,故它的时间复杂度为On2, 即Tn与n2 数量级相同; 2、分析下列算法段的时间频度及时间复杂度

for i=1;i<=n;i++

for j=1;j<=i;j++

for k=1;k<=j;k++

x=i+j-k;

分析算法规律可知时间频度Tn=1+1+2+1+2+3+...+1+2+3+…+n

由于有1/6 ≤ Tn/ n3 ≤1,故时间复杂度为On3

第二章线性表

一、选择题

1.一个线性表第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是

A110 B108C100 D120

2. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动个元素;

A64B63 C D7

3.线性表采用链式存储结构时,其地址;

A 必须是连续的

B 部分地址必须是连续的

C 一定是不连续的

D 连续与否均可以

4. 在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行

As->next=p;p->next=s; B s->next=p->next;p->next=s;

Cs->next=p->next;p=s; Dp->next=s;s->next=p;

5.在一个单链表中,若删除p所指结点的后续结点,则执行

Ap->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线性表中任何一个元素有且仅有一个直接后继

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;freeq;

三、填空题

1.已知P为单链表中的非首尾结点,在P结点后插入S结点的语句为:

_______________________ ;

2.顺序表中逻辑上相邻的元素物理位置相邻, 单链表中逻辑上相邻的元素物理位置

_________相邻;

3.线性表L=a1,a2,...,an采用顺序存储,假定在不同的n+1个位置上插入的概率相同,则插入一个新元素平均需要移动的元素个数是________________________

4.在非空双向循环链表中,在结点q的前面插入结点p的过程如下:

p->prior=q->prior;

q->prior->next=p;

p->next=q;

______________________;

5.已知L是无表头结点的单链表,是从下列提供的答案中选择合适的语句序列,分别实现:

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.whilep->next= Q p=p-next;

9.whilep->next=null p=p->next;

四、算法设计题

1.试编写一个求已知单链表的数据域的平均值的函数数据域数据类型为整型;

2.已知带有头结点的循环链表中头指针为head,试写出删除并释放数据域值为x的所有结点的c函数;

3.某百货公司仓库中有一批电视机,按其价格从低到高的次序构成一个循环链表,每个结点有价格、数量和链指针三个域;现出库销售m台价格为h的电视机,试编写算法修改原链表;

4.某百货公司仓库中有一批电视机,按其价格从低到高的次序构成一个循环链表,每个结点有价格、数量和链指针三个域;现新到m台价格为h的电视机,试编写算法修改原链表;

5.线性表中的元素值按递增有序排列,针对顺序表和循环链表两种不同的存储方式,分别编写C函数删除线性表中值介于a与ba≤b之间的元素;

6.设A=a0,a1,a2,...,an-1,B=b0,b1,b2,...,bm-1是两个给定的线性表,它们的结点个数分

别是n和m,且结点值均是整数;

若n=m,且ai= bi 0≤i

若n

若存在一个j, jB;

试编写一个比较A和B的C函数,该函数返回-1或0或1,分别表示AB;

7.试编写算法,删除双向循环链表中第k个结点;

8.线性表由前后两部分性质不同的元素组成a0,a1,...,an-1,b0,b1,...,bm-1,m和n为两部分元素的个数,若线性表分别采用数组和链表两种方式存储,编写算法将两部分元素换位成

b0,b1,...,bm-1,a0,a1,...,an-1,分析两种存储方式下算法的时间和空间复杂度;

9.用循环链表作线性表a0,a1,...,an-1和b0,b1,...,bm-1的存储结构,头指针分别为ah和bh,设计C函数,把两个线性表合并成形如a0,b0,a1,b1,…的线性表,要求不开辟新的动态空间,利用原来循环链表的结点完成合并操作,结构仍为循环链表,头指针为head,并分析算法的时间复杂度;

10.试写出将一个线性表分解为两个带有头结点的循环链表,并将两个循环链表的长度放在各自的头结点的数据域中的C函数;其中,线性表中序号为偶数的元素分解到第一个循环链表中,序号为奇数的元素分解到第二个循环链表中;

11.试写出把线性链表改为循环链表的C函数;

12.己知非空线性链表中x结点的直接前驱结点为y,试写出删除x结点的C函数;

参考答案:

一、选择题

1. B 3. D 4. B 5. A 7、C

二、判断题:

参考答案:1、×2、√3、×4、×5、√

三、填空题

1、s->next=p->next; p->next=s;

2、一定;不一定

3、n/2

4、q->prior=p;

5、16 3

2 2 91 7

四、算法设计题

1、

include ""

include ""

typedef struct node

{int data;

struct node link;

}NODE;

int averNODE head

{int i=0,sum=0,ave; NODE p;

p=head;

whilep=NULL

{p=p->link;++i;

sum=sum+p->data;}

ave=sum/i;

return ave;}

2、

include ""

include ""

typedef struct node

{

int data; / 假设数据域为整型/

struct node link;

}NODE;

void del_linkNODE head,int x / 删除数据域为x的结点/ {

NODE p,q,s;

p=head;

q=head->link;

whileq=head

{ifq->data==x

{p->link=q->link;

s=q;

q=q->link;

frees;}

else

{

p=q;

q=q->link;

}

}

}

3、

void delNODE head,float price,int num {

NODE p,q,s;

p=head;q=head->next;

whileq->price

{

p=q;

q=q->next;

}

ifq->price==price

q->num=q->num-num; else

printf"无此产品"; ifq->num==0

{

p->next=q->next; freeq;

}

}

4、

include ""

include ""

typedef struct node {

float price;

int num;

struct node next;

}NODE;

void insNODE head,float price,int num {

NODE p,q,s;

p=head;q=head->next;

whileq->price

{

p=q;

q=q->next;

}

ifq->price==price

q->num=q->num+num;

else

{

s=NODE mallocsizeofNODE;

s->price=price;

s->num=num;

s->next=p->next;

p->next=s;

}

}

5、顺序表:

算法思想:从0开始扫描线性表,用k记录下元素值在a与b之间的元素个数,对于不满足该条件的元素,前移k个位置,最后修改线性表的长度;

void delelemtype list,int n,elemtype a,elemtype b

{

int i=0,k=0;

whilei

{

iflisti>=a&&listi<=b k++;

else

listi-k=listi;

i++;

}

n=n-k; / 修改线性表的长度/

}

循环链表:

void delNODE head,elemtype a,elemtype b

{

NODE p,q;

p= head;q=p->link; / 假设循环链表带有头结点/ whileq=head && q->data

{

p=q;

q=q->link;

}

whileq=head && q->data

{

r=q;

q=q->link;

freer;

}

ifp=q

p->link=q;

}

6、

define MAXSIZE 100

int listAMAXSIZE,listBMAXSIZE; int n,m;

int compareint a,int b

{

int i=0;

whileai==bi&&i

i++;

ifn==m&&i==n return0;

ifn

ifn>m&&i==m return1;

ifi

ifai

else ifai>bi return1;

}

7、

void delDUNODE head,int i

{

DUNODE p;

{

head=head->next;

head->prior=NULL;

return0;

}

Else

{forj=0;j

p=p->next;

ifp==NULL||j>i return1;

p->prior->next=p->next;

p->next->prior=p->proir;

freep;

return0;

}

8.

顺序存储:

void convertelemtype list,int l,int h / 将数组中第l个到第h个元素逆置/ {

elemtype temp;

fori=h;i<=l+h/2;i++

{

temp=listi;

listi=listl+h-i;

listl+h-i=temp;

}

}

void exchangeelemtype list,int n,int m; {

convertlist,0,n+m-1;

convertlist,0,m-1;

convertlist,m,n+m-1;

}

该算法的时间复杂度为On+m,空间复杂度为O1 链接存储:不带头结点的单链表

typedef struct node

{

elemtype data;

struct node link;

}NODE;

void convertNODE head,int n,int m

{

NODE p,q,r;

int i;

p=head;

q=head;

fori=0;i

q=q->link; /q指向an-1结点/

r=q->link;

q->link=NULL;

whiler->link=NULL

r=r->link; /r指向最后一个bm-1结点/

head=q;

r->link=p;

}

该算法的时间复杂度为On+m,但比顺序存储节省时间不需要移动元素,只需改变指针,空间复杂度为O1

typedef struct node

{

elemtype data;

struct node link;

}NODE;

NODE unionNODE ah,NODE bh {

NODE a,b,head,r,q;

head=ah;

a=ah;

b=bh;

whilea->link=ah&&b->link=bh {

r=a->link;

q=b->link;

a->link=b;

b->link=r;

a=r;

}

ifa->link==ah /a的结点个数小于等于b的结点个数/

{

a->link=b;

whileb->link=bh

b=b->link;

b->link=head;

}

ifb->link==bh /b的结点个数小于a的结点个数/

{

r=a->link;

a->link=b;

b->link=r;

}

returnhead;

}

该算法的时间复杂度为On+m,其中n和m为两个循环链表的结点个数.

10.

严蔚敏版数据结构习题及参考答案1

习题1 一、单项选择题 A1.数据结构是指()。 A.数据元素的组织形式 B.数据类型 C.数据存储结构 D.数据定义 C2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为( C )。 A.存储结构 B.逻辑结构 C.链式存储结构 D.顺序存储结构 D3.树形结构是数据元素之间存在一种( D )。 A.一对一关系 B.多对多关系 C.多对一关系 D.一对多关系 B4.设语句x++的时间是单位时间,则以下语句的时间复杂度为( B)。 for(i=1; i<=n; i++) for(j=i; j<=n; j++) x++; n) C.O(n) D.O(3n) A.O(1) B.O(2 CA5.算法分析的目的是(1C),算法分析的两个主要方面是(2A)。 (1) A.找出数据结构的合理性 B.研究算法中的输入和输出关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 (2) A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 6.计算机算法指的是(1),它具备输入,输出和(2B)等五个特性。 (1) A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 (2) A.可行性,可移植性和可扩充性 B.可行性,确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性,稳定性和安全性 7.数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要( B )。 A.低 B.高 C.相同 D.不好说 8.数据结构作为一门独立的课程出现是在()年。 A.1946 B.1953 C.1964 D.1968 9.数据结构只是研究数据的逻辑结构和物理结构,这种观点(B )。 A.正确 B.错误 C.前半句对,后半句错 D.前半句错,后半句对 10.计算机内部数据处理的基本单位是(B )。 A.数据 B.数据元素 C.数据项 D.数据库

严蔚敏版数据结构题集(C语言版)完整答案

严蔚敏 数据结构C 语言版答案详解 第1章 绪论 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解: ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C,k,&e) 操作结果:用e 返回复数C 的第k 元的值

数据结构习题及答案——严蔚敏_课后习题答案

第一章绪论选择题1.组成数据的基本单位是A数据项B数据类型C数据元素D数据变量2.数据结构是研究数据的以及它们之间的相互关系。A理想结构物理结构B理想结构抽象结构C物理结构逻辑结构D抽象结构逻辑结构 3.在数据结构中从逻辑上可以把数据结构分成A动态结构和静态结构B紧凑结构和非紧凑结构C线性结构和非线性结构D内部结构和外部结构 4.数据结构是一门研究非数值计算的程序设计问题中计算机的①以及它们之间的②和运算等的学科。①A数据元素B计算方法C逻辑存储D数据映像②A结构B关系C运算D算法5.算法分析的目的是。A 找出数据结构的合理性B研究算法中的输入和输出的关系C分析算法的效率以求改进D分析算法的易懂性和文档性6.计算机算法指的是①它必须具备输入、输出和②等5个特性。①A计算方法B排序方法C解决问题的有限运算序列D调度方法②A可执行性、可移植性和可扩充性B可行性、确定性和有穷性C确定性、有穷性和稳定性D易读性、稳定性和安全性二、判断题1.数据的机内表示称为数据的存储结构。2.算法就是程序。3.数据元素是数据的最小单位。4.算法的五个特性为有穷性、输入、输出、完成性和确定性。 5.算法的时间复杂度取决于问题的规模和待处理数据的初态。三、填空题 1.数据逻辑结构包括________、________、_________ 和_________四种类型其中树形结构和图形结构合称为_____。2.在线性结构中第一个结点____前驱结点其余每个结点有且只有______个前驱结点最后一个结点______后续结点其余每个结点有且只有_______个后续结点。 3.在树形结构中树根结点没有_______结点其余每个结点有且只有_______个前驱结点叶子结点没有________结点其余每个结点的后续结点可以_________。4.在图形结构中每个结点的前驱结点数和后续结点数可以_________。5.线性结构中元素之间存在________关系树形结构中元素之间存在______关系图形结构中元素之间存在_______关系。6.算法的五个重要特性是_______、_______、______、_______、_______。7.数据结构的三要素是指______、_______和________。8.链式存储结构与顺序存储结构相比较主要

(完整版)严蔚敏版数据结构课后习题答案-完整版

第1章绪论 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据

类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。 解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解: ADT Complex{ 数据对象:D={r,i|r,i 为实数} 数据关系:R={} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C ,其实部和虚部分别为re 和im DestroyCmoplex(&C)

严蔚敏-数据结构课后习题及复习资料解析

第一章绪论 一、选择题 1.组成数据的基本单位是() (A)数据项(B)数据类型(C)数据元素(D)数据变量 2.数据结构是研究数据的()以及它们之间的相互关系。 (A)理想结构,物理结构(B)理想结构,抽象结构 (C)物理结构,逻辑结构(D)抽象结构,逻辑结构 3.在数据结构中,从逻辑上可以把数据结构分成() (A)动态结构和静态结构(B)紧凑结构和非紧凑结构 (C)线性结构和非线性结构(D)内部结构和外部结构 4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。 ① (A)数据元素(B)计算方法(C)逻辑存储(D)数据映像 ② (A)结构(B)关系(C)运算(D)算法 5.算法分析的目的是()。 (A)找出数据结构的合理性(B)研究算法中的输入和输出的关系 (C)分析算法的效率以求改进(D)分析算法的易懂性和文档性 6.计算机算法指的是(①),它必须具备输入、输出和(②)等5个特性。 ① (A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法 ② (A)可执行性、可移植性和可扩充性(B)可行性、确定性和有

穷性 (C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性 二、判断题 1.数据的机内表示称为数据的存储结构。() 2.算法就是程序。() 3.数据元素是数据的最小单位。() 4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。() 5.算法的时间复杂度取决于问题的规模和待处理数据的初态。() 三、填空题 1.数据逻辑结构包括、、和四种类型,其中树形结构和图形结构合称为。 2.在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。 3.在树形结构中,树根结点没有结点,其余每个结点有且只有个前驱结点;叶子结点没有结点,其余每个结点的后续结点可以。 4.在图形结构中,每个结点的前驱结点数和后续结点数可以。 5.线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。 6.算法的五个重要特性是、、、、。 7.数据结构的三要素是指、和。 8.链式存储结构与顺序存储结构相比较,主要优点是。

《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)

第1章 4.答案: (1)顺序存储结构 顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。 (2)链式存储结构 顺序存储结构要求所有的元素依次存放在一片连续的存储空间中,而链式存储结构,无需占用一整块存储空间。但为了表示结点之间的关系,需要给每个结点附加指针字段,用于存放后继元素的存储地址。所以链式存储结构通常借助于程序设计语言的指针类型来描述。 5. 选择题 (1)~(6):CCBDDA \ 6. (1)O(1) (2)O(m*n) (3)O(n2) (4)O(log3n) (5)O(n2) (6)O(n) (

第2章 1.选择题 (1)~(5):BABAD (6)~(10): BCABD (11)~(15):CDDAC \ 2.算法设计题 (1)将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。[题目分析] 合并后的新表使用头指针Lc指向,pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,依次摘取其中较小者重新链接在Lc表的最后。如果两个表中的元素相等,只摘取La表中的元素,删除Lb表中的元素,这样确保合并后表中无重复的元素。当一个表到达表尾结点,为空时,将非空表的剩余元素直接链接在Lc表的最后。 void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc) {法设计题 (1)将编号为0和1的两个栈存放于一个数组空间V[m]中,栈底分别处于数组的两端。当第0号栈的栈顶指针top[0]等于-1时该栈为空,当第1号栈的栈 顶指针top[1]等于m时该栈为空。两个栈均从两端向中间增长。试编写双栈初始化,判断栈空、栈满、进栈和出栈等算法的函数。双栈数据结构的定义如下:Typedef struct ] {int top[2],bot[2]; 第5章 , 1.选择题 (1)~(5):ADDCA (6)~(10):CCBDC (11)~(15):BCACA

数据结构(C语言版)严蔚敏课后习题答案

数据结构(C语言版)严蔚敏课后习题答案数据结构(C语言版)严蔚敏课后习题答案 一、线性表 1. 顺序表 顺序表是一种存储结构,它将元素顺序存放在一块连续的存储区域中。C语言中常用数组来实现顺序表。以下是一些常见题目的解答:题目1:已知顺序表中存储了n个整数,请编写一个算法,将这个顺序表中的所有负数挑选出来,并将它们按照原有顺序存放在新的顺序表中。 解答: ``` #include #define MAX_SIZE 100 int main() { int A[MAX_SIZE], neg[MAX_SIZE]; int n, i, j = 0; printf("Enter the number of elements: "); scanf("%d", &n); printf("Enter the elements: ");

for (i = 0; i < n; i++) { scanf("%d", &A[i]); if (A[i] < 0) { neg[j] = A[i]; j++; } } printf("Negative numbers: "); for (i = 0; i < j; i++) { printf("%d ", neg[i]); } return 0; } ``` 题目2:假设顺序表A和B中的元素递增有序排列,编写一个算法合并这两个顺序表,并使合并后的顺序表仍然递增有序。 解答: ``` #include

#define MAX_SIZE 100 int main() { int A[MAX_SIZE], B[MAX_SIZE], C[MAX_SIZE * 2]; int m, n, i, j, k; printf("Enter the number of elements in the first list: "); scanf("%d", &m); printf("Enter the elements in increasing order: "); for (i = 0; i < m; i++) { scanf("%d", &A[i]); C[i] = A[i]; } printf("Enter the number of elements in the second list: "); scanf("%d", &n); printf("Enter the elements in increasing order: "); for (i = 0; i < n; i++) { scanf("%d", &B[i]); C[m + i] = B[i]; } // Merge A and B into C

《数据结构》第二版严蔚敏课后习题作业参考答案(1-7章)

《数据结构》第二版严蔚敏课后习题作业参 考答案(1-7章) 【第一章绪论】 1. 数据结构是计算机科学中的重要基础知识,它研究的是如何组织 和存储数据,以及如何通过高效的算法进行数据的操作和处理。本章 主要介绍了数据结构的基本概念和发展历程。 【第二章线性表】 1. 线性表是由一组数据元素组成的数据结构,它的特点是元素之间 存在着一对一的线性关系。本章主要介绍了线性表的顺序存储结构和 链式存储结构,以及它们的操作和应用。 【第三章栈与队列】 1. 栈是一种特殊的线性表,它的特点是只能在表的一端进行插入和 删除操作。本章主要介绍了栈的顺序存储结构和链式存储结构,以及 栈的应用场景。 2. 队列也是一种特殊的线性表,它的特点是只能在表的一端进行插 入操作,而在另一端进行删除操作。本章主要介绍了队列的顺序存储 结构和链式存储结构,以及队列的应用场景。 【第四章串】 1. 串是由零个或多个字符组成的有限序列,它是一种线性表的特例。本章主要介绍了串的存储结构和基本操作,以及串的模式匹配算法。

【第五章数组与广义表】 1. 数组是一种线性表的顺序存储结构,它的特点是所有元素都具有 相同数据类型。本章主要介绍了一维数组和多维数组的存储结构和基 本操作,以及广义表的概念和表示方法。 【第六章树与二叉树】 1. 树是一种非线性的数据结构,它的特点是一个节点可以有多个子 节点。本章主要介绍了树的基本概念和属性,以及树的存储结构和遍 历算法。 2. 二叉树是一种特殊的树,它的每个节点最多只有两个子节点。本 章主要介绍了二叉树的存储结构和遍历算法,以及一些特殊的二叉树。 【第七章图】 1. 图是一种非线性的数据结构,它由顶点集合和边集合组成。本章 主要介绍了图的基本概念和属性,以及图的存储结构和遍历算法。 【总结】 1. 数据结构是计算机科学中非常重要的一门基础课程,它关注的是 如何高效地组织和存储数据,以及如何通过算法进行数据的操作和处理。本文对《数据结构》第二版严蔚敏的课后习题作业提供了参考答案,涵盖了第1-7章的内容。通过学习和掌握这些知识,可以帮助我们更好地理解和应用数据结构,提高程序的效率和质量。数据结构是编 程的基础,也是计算机科学领域的一个重要研究方向,相信通过学习 和实践,我们能够深入理解和运用好数据结构的知识。

数据结构c语言版严蔚敏课后习题答案

数据结构c语言版严蔚敏课后习题答案 数据结构是计算机科学中非常重要的一门学科,它研究的是数据的组织、存储 和管理方式。而C语言作为一种广泛应用于系统编程和嵌入式开发的高级编程 语言,与数据结构的学习息息相关。本文将针对《数据结构(C语言版)》严蔚 敏教材的课后习题提供一些答案,希望能够帮助读者更好地理解和掌握数据结构。 第一章:绪论 在第一章中,主要介绍了数据结构的基本概念和基本术语。课后习题主要是一 些概念性的问题,例如数据结构与算法的关系、数据的逻辑结构和物理结构等。这些问题的答案可以通过仔细阅读教材中的相关内容来得到。 第二章:线性表 线性表是数据结构中最基本、最常用的一种结构。课后习题主要涉及线性表的 基本操作,如插入、删除、查找等。这些问题的答案可以通过编写相应的C语 言代码来实现。 第三章:栈和队列 栈和队列是线性表的特殊形式,具有后进先出(LIFO)和先进先出(FIFO)的 特点。课后习题主要涉及栈和队列的基本操作,如进栈、出栈、入队、出队等。这些问题的答案同样可以通过编写相应的C语言代码来实现。 第四章:串 串是由零个或多个字符组成的有限序列,是一种特殊的线性表。课后习题主要 涉及串的模式匹配、串的替换等操作。这些问题的答案可以通过使用C语言的 字符串处理函数来实现。

第五章:数组和广义表 数组是一种线性表的顺序存储结构,广义表是线性表的扩展。课后习题主要涉及数组和广义表的创建、访问和操作等。这些问题的答案可以通过编写相应的C语言代码来实现。 第六章:树 树是一种非线性的数据结构,具有层次关系。课后习题主要涉及树的遍历、节点的插入和删除等操作。这些问题的答案可以通过使用C语言的指针和递归来实现。 第七章:图 图是一种非线性的数据结构,由节点和边组成。课后习题主要涉及图的遍历、最短路径、最小生成树等操作。这些问题的答案可以通过使用C语言的图算法来实现。 通过以上的简要介绍,读者可以了解到《数据结构(C语言版)》严蔚敏教材的课后习题主要涵盖了线性表、栈和队列、串、数组和广义表、树、图等各个方面。通过仔细思考和编写相应的C语言代码,读者可以更好地理解和掌握数据结构的相关知识。希望本文提供的答案能够对读者有所帮助。

严蔚敏数据结构课后习题及答案解析

严蔚敏数据结构课后习题及答案解析 第一章绪论 一、选择题 1.组成数据的基本单位是() (A)数据项(B)数据类型(C)数据元素(D)数据变量 2.数据结构是研究数据的()以及它们之间的相互关系。 (A)理想结构,物理结构(B)理想结构,抽象结构 (C)物理结构,逻辑结构(D)抽象结构,逻辑结构 3.在数据结构中,从逻辑上可以把数据结构分成() (A)动态结构和静态结构(B)紧凑结构和非紧凑结构 (C)线性结构和非线性结构(D)内部结构和外部结构 4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。 ①(A)数据元素(B)计算方法(C)逻辑存储(D)数据映像 ②(A)结构(B)关系(C)运算(D)算法 5.算法分析的目的是()。 (A)找出数据结构的合理性(B)研究算法中的输入和输出的关系 (C)分析算法的效率以求改进(D)分析算法的易懂性和文档性 6.计算机算法指的是(①),它必须具备输入、输出和(②)等5个特性。 ①(A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法 ②(A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性 (C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性 二、判断题 1.数据的机内表示称为数据的存储结构。() 2.算法就是程序。()

3.数据元素是数据的最小单位。() 4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。() 5.算法的时间复杂度取决于问题的规模和待处理数据的初态。() 三、填空题 1.数据逻辑结构包括________、________、_________ 和_________四种类型,其中树形结构和图形结构合称为_____。 2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______个前驱结点;最后一个结点______后续结点,其余每个结点有且只有_______个后续结点。 3.在树形结构中,树根结点没有_______结点,其余每个结点有且只有_______个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以_________。 4.在图形结构中,每个结点的前驱结点数和后续结点数可以_________。 5.线性结构中元素之间存在________关系,树形结构中元素之间存在______关系,图形结构中元素之间存在_______关系。 6.算法的五个重要特性是_______、_______、______、_______、_______。 7.数据结构的三要素是指______、_______和________。 8.链式存储结构与顺序存储结构相比较,主要优点是________________________________。 9.设有一批数据元素,为了最快的存储某元素,数据结构宜用_________结构,为了方便插入一个元素,数据结构宜用____________结构。 四、算法分析题 1.求下列算法段的语句频度及时间复杂度 参考答案: 一、选择题 1. C 2.C

严蔚敏版数据结构课后习题答案-完整版

第1章 绪论之巴公井开创作 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和笼统数据类型. 解:数据是对客观事物的符号暗示.在计算机科学中是指所有能输入到计算机中并被计算机法式处置的符号的总称. 数据元素是数据的基本单元,在计算机法式中通常作为一个整体进行考虑和处置. 数据对象是性质相同的数据元素的集合,是数据的一个子集. 数据结构是相互之间存在一种或多种特定关系的数据元素的集合. 存储结构是数据结构在计算机中的暗示. 数据类型是一个值的集合和界说在这个值集上的一组把持的总称. 笼统数据类型是指一个数学模型以及界说在该模型上的一组把持.是对一般数据类型的扩展. 试描述数据结构和笼统数据类型的概念与法式设计语言中数据类型概念的区别. 解:笼统数据类型包括一般数据类型的概念,但含义比一般数据类型更广、更笼统.一般数据类型由具体语言系统内部界说,直接提供给编程者界说用户数据,因此称它们为预界说数据类型.笼统数据类型通常由编程者界说,包括界说它所使用的数据和在这些数据上所进行的把持.在界说笼统数据类型中的数据部份和把持部份时,要求只界说到数据的逻辑结构和把持说明,不考虑数据的存储结构和把持的具体实现,这样笼统条理更高,更能为其他用户提供良好的使用接口. 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =

试按图论中图的画法惯例画出其逻辑结构图. 解: 1.4 试仿照三元组的笼统数据类型分别写出笼统数据类型复数和有理数的界说(有理数是其分子、分母均为自然数且分母不为零的分数). 解: ADT Complex{ 数据对象:D={r,i|r,i为实数} 数据关系:R={} 基本把持: InitComplex(&C,re,im) 把持结果:构造一个复数C,其实部和虚部份别为re 和im DestroyCmoplex(&C) 把持结果:销毁复数C Get(C,k,&e) 把持结果:用e返回复数C的第k元的值 Put(&C,k,e) 把持结果:改变复数C的第k元的值为e IsAscending(C) 把持结果:如果复数C的两个元素按升序排列,则返回1,否则返回0 IsDescending(C) 把持结果:如果复数C的两个元素按降序排列,则返回1,否则返回0 Max(C,&e) 把持结果:用e返回复数C的两个元素中值较年夜的一个 Min(C,&e) 把持结果:用e返回复数C的两个元素中值较小的一个 }ADT Complex ADT RationalNumber{ 数据对象:D={s,m|s,m为自然数,且m不为0} 数据关系:R={} 基本把持: InitRationalNumber(&R,s,m) 把持结果:构造一个有理数R,其分子和分母分别为 s和m

严蔚敏版数据结构课后习题答案-完整版之欧阳歌谷创作

第1章 绪论 欧阳歌谷(2021.02.01) 1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。 解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示。 数据类型是一个值的集合和定义在这个值集上的一组操作的总称。 抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。 解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中 {}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r = 试按图论中图的画法惯例画出其逻辑结构图。

解: 1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解: ADT Complex{ 数据对象:D={r,i|r,i为实数} 数据关系:R={} 基本操作: InitComplex(&C,re,im) 操作结果:构造一个复数C,其实部和虚部分别为 re和im DestroyCmoplex(&C) 操作结果:销毁复数C Get(C,k,&e) 操作结果:用e返回复数C的第k元的值 Put(&C,k,e) 操作结果:改变复数C的第k元的值为e IsAscending(C) 操作结果:如果复数C的两个元素按升序排列,则返回1,否则返回0 IsDescending(C) 操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0 Max(C,&e) 操作结果:用e返回复数C的两个元素中值较大的一个 Min(C,&e) 操作结果:用e返回复数C的两个元素中值较小的一个 }ADT Complex ADT RationalNumber{ 数据对象:D={s,m|s,m为自然数,且m不为0} 数据关系:R={} 基本操作: InitRationalNumber(&R,s,m) 操作结果:构造一个有理数R,其分子和分母分别 为s和m DestroyRationalNumber(&R) 操作结果:销毁有理数R Get(R,k,&e)

数据结构第2版习题答案解析-严蔚敏

数据结构(C语言版)(第2版) 课后习题答案 李冬梅

目录 第1章绪论............................................. 错误!未定义书签。第2章线性表........................................... 错误!未定义书签。第3章栈和队列......................................... 错误!未定义书签。第4章串、数组和广义表................................. 错误!未定义书签。第5章树和二叉树....................................... 错误!未定义书签。第6章图................................................ 错误!未定义书签。第7章查找............................................. 错误!未定义书签。第8章排序............................................. 错误!未定义书签。

第1章绪论 1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。 答案: 数据:是客观事物的符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。 数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。 数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。 数据对象:是性质相同的数据元素的集合,是数据的一个子集。例如:整数数据对象是集合N={0,±1,±2,…},字母字符数据对象是集合C={‘A’,‘B’,…,‘Z’,‘a’,‘b’,…,‘z’},学生基本信息表也可是一个数据对象。 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合,“结构”就是指数据元素之间存在的关系。 逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。 存储结构:数据对象在计算机中的存储表示,也称为物理结构。 抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。 2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。 答案: 例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继。学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。 这些学生记录在计算机中的存储表示就是存储结构。如果用连续的存储单元(如用数组表示)来存放这些记录,则称为顺序存储结构;如果存储单元不连续,而是随机存放各个记录,然后用指针进行链接,则称为链式存储结构。 即相同的逻辑结构,可以对应不同的存储结构。 3.简述逻辑结构的四种基本关系并画出它们的关系图。 答案:

大数据结构严蔚敏清华大学出版社习题及问题详解

第1章绪论 (2) 1、填空题 (2) 2、应用题 (2) 第2章线性表 (3) 1、填空题 (3) 2、选择题 (3) 3、判断题 (4) 4、程序设计题 (4) 第3章栈和队列 (6) 1、填空题 (6) 2、选择题 (6) 3、判断题 (6) 第4章串 (7) 1、选择题 (7) 2、判断题 (7) 第5章数组和广义表 (7) 1、填空题 (7) 2、选择题 (7) 3、判断题 (8) 第6章树和二叉树 (8) 1、填空题 (8) 2、选择题 (8) 3、判断题 (9) 4、应用题 (9) 5、读程序写结果 (15) 第7章图 (16) 1、填空题 (16) 2、选择题 (16) 3、判断题 (17) 4、应用题 (17) 5、程序设计题 (22) 第8章动态存储管理 (22) 1、填空题 (22) 2、选择题 (22) 3、判断题 (22) 4、应用题 (22) 5、程序设计题 (22) 第9章查找 (22) 1、选择题 (22) 2、判断题 (23) 3、应用题 (23) 4、程序设计题 (25) 第10章部排序 (26) 1、填空题 (26)

2、选择题 (26) 3、判断题 (26) 4、应用题 (27) 第11章外部排序 (27) 第12章文件 (27) 第1章绪论1、填空题 1.常见的数据结构有_线性__结构,__树形___结构,__图形__结构等三种。 2.常见的存储结构有__顺序存储_______结构,__链式存储____结构等两种。 3.数据的基本单位是_数据元素___,它在计算机中是作为一个整体来处理的。 4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,__线性结构____和__非线性结构___。 2、应用题 1、给出以下算法的时间复杂度. void fun(int n) { int i=1,k=100; while(i

相关文档
最新文档