1、 算法:是对特定问题求解步骤的一种描述,是指令的有限序列。 1.4 语句的时间复杂度为: 1.5 参考程序: main() int x,y,z; scanf(“%d, %d, %d”,x,y,z); if (x=y) if(x=z) if (y=z) printf(“%d, %d, %d”,x,y,z); else printf(“%d, %d, %d”,x,z,y);else printf(“%d, %d, %d”,z,x,y); if(z=x) printf(“%d, %d, %d”,y,z,x); printf(“%d, %d, %d”,z,y,x); printf(“%d, %d, %
2、d”,y,x,z); 1.6 参考程序: int i,n; float x,a,p; printf(“nn=”);scanf(“%f”,n); printf(“nx=”);scanf(“%f”,x); for(i=0;i=n;i+) scanf(“%f ”,ai); p=a0; for(i=1; p=p+ai*x; x=x*x; printf(“%f”,p) 习题2参考答案 2.1选择题 (1). c. (2). b. (3). b. (4). b. 5. d. 6. b. 7. b.8. a.9. a.10. d. 2.2.填空题 (1). 有限序列 (2). 顺序存储和链式存储 (3).
3、(n)o(n) (4). n-i+1 n-i (5). 链式 (6). 数据指针 (7). 前驱后继 (9). s-next=p-next; p-next=s ; 2.3. 解题思路:将顺序表a中的元素输入数组a,若数组a中元素个数为n,将下标为0,1,2,?,(n-1)/2的元素依次与下标为n,n-1,?, (n-1)/2的元素交换,输出数组a的元素。 参考程序如下: float t,a;i=n-1;i=(n-1)/2; t=ai; ai =an-1-i;an-1-i=t; printf(“%f”,ai); 2.4 算法与程序:in; if(aia0) ai =a0;a0=t; printf
4、(“%f”,a0); for(i=2; if(aia1) ai =a1;a1=t; 2.5 算法与程序: int i,j,k,n; float x,t,a;printf(“nn=”);/ 输入线性表中的元素 for (i=0; in; i+) / 对线性表中的元素递增排序 k=i; for (j=i+1; jn; j+) if (ajak) k=j; if (kj) t=ai;ai=ak;ak=t;i+)/ 在线性表中找到合适的位置 if(aix)break; for(k=n-1;k=i;i-)/ 移动线性表中元素,然后插入元素x ak+1=ak; ai=x;i+) / 依次输出线性表中的元素
5、 2.6 算法思路:依次扫描a和b的元素,比较a、b当前的元素的值,将较小值的元素赋给c,如此直到一个线性表扫描完毕,最后将未扫描完顺序表中的余下部分赋给c即可。c的容量要能够容纳a、b两个线性表相加的长度。 有序表的合并算法: void merge (seqlist a, seqlist b, seqlist *c) int i,j,k; i=0;j=0;k=0; while ( i=a.last j=b.last ) if (a.datai=b.dataj) c-datak+=a.datai+; c-datak+=b.dataj+; while (i=a.last ) c-datak+=
6、a.datai+; while (j=b.last ) c-last=k-1; 2.7 算法思路:依次将a中的元素和b的元素比较,将值相等的元素赋给c,如此直到线性表扫描完毕,线性表c就是所求递增有序线性表。 while ( i=a.last) while(j=b.last ) 习题3参考答案 3.1.选择题 (1). d (2). c (3). d (4). c (5). b (6). c (7). c (8). c (9). b (10).ab (11). d (12). b (13). d (14). c (15). c (16). d(17). d (18). c (19). c (2
7、0). c 3.2.填空题 (1) filo, fifo (2) -1, 3 4 x * + 2 y * 3 / - (3) stack.top, stack.sstack.top=x (4) pllink-rlink=p-rlink, p-rlink-llink=p-rlink (5) (r-f+m)%m (6) top1+1=top2 (7) f=r (8) front=rear (9) front=(rear+1)%n (10) n-1 3.3 答:一般线性表使用数组来表示的 线性表一般有插入、删除、读取等对于任意元素的操作 而栈只是一种特殊的线性表 栈只能在线性表的一端插入(称为入栈,
8、push)或者读取栈顶元素或者称为“弹出、出栈”(pop)。 3.4 答:相同点:栈和队列都是特殊的线性表,只在端点处进行插入,删除操作。 不同点:栈只在一端(栈顶)进行插入,删除操作;队列在一端(top)删除,一端(rear)插入。 3.5 答:可能序列有14种:abcd; acbd; acdb; abdc; adcb; bacd; badc; bcad; bcda; bdca; cbad; cbda; cdba; dcba。 3.6 答:不能得到4,3,5,6,1,2,最先出栈的是4,则按321的方式出,不可能得到1在2前的序列,可以得到1,3,5,4,2,6,按如下方式进行push(1)
9、, pop(), push(2), push(3), pop(), push(4), push(5), pop(), pop(), pop(), push(6), pop()。 3.7 答:stack 3.8 非递归:【篇二:数据结构(c语言版)(第2版)课后习题答案】李冬梅2015.3目录 第 第1章绪论 . 1 2章线性表 . 5 3章栈和队列 . 13 4章串、数组和广义表 . 26 5章树和二叉树. 33 6章图 . 42 7章查找 . 54 8章排序 . 65第1章绪论 1简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。 答案:是客观事物的
10、符号表示,指所有能输入到计算机中并被计算机程序处理的符号的总称。如数学计算中用到的整数和实数,文本编辑所用到的字符串,多媒体程序处理的图形、图像、声音、动画等通过特殊编码定义后的数据。是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、结点、记录等。数据元素用于完整地描述一个对象,如一个学生记录,树中棋盘的一个格局(状态)、图中的一个顶点等。是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。换句话说,数据结构是带“结构”的数据元素的集合
11、,“结构”就是指数据元素之间存在的关系。 逻辑结构:从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。 存储结构:数据对象在计算机中的存储表示,也称为物理结构。 抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。具体包括三部分:数据对象、数据对象上关系的集合和对数据对象的基本操作的集合。 2试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。 例如有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。每个学生基本信息记录对应一个数据元素,学生记录按顺序号排
12、列,形成了学生基本信息记录的线性序列。对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前趋和直接后继。学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。 这些学生记录在计算机中的存储表示就是存储结构。如果用连续的存储单元(如用数组表示)来存放这些记录,则称为顺序存储结构;如果存储单元不连续,而是随机存放各个记录,然后用指针进行链接,则称为链式存储结构。 即相同的逻辑结构,可以对应不同的存储结构。 3简述逻辑结构的四种基本关系并画出它们的关系图。答案: (1)集合结构 数据元素之间除了“属于同一集合”的关系外,别无其
13、他关系。例如,确定一名学生是否为班级成员,只需将班级看做一个集合结构。 (2)线性结构 数据元素之间存在一对一的关系。例如,将学生信息数据按照其入学报到的时间先后顺序进行排列,将组成一个线性结构。 (3)树结构 数据元素之间存在一对多的关系。例如,在班级的管理体系中,班长管理多个组长,每位组长管理多名组员,从而构成树形结构。 (4)图结构或网状结构 数据元素之间存在多对多的关系。例如,多位同学之间的朋友关系,任何两位同学都可以是朋友,从而构成图形结构或网状结构。 其中树结构和图结构都属于非线性结构。 四类基本逻辑结构关系图 4存储结构由哪两种基本的存储方法实现? (1)顺序存储结构 顺序存储结
14、构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。 (2)链式存储结构 顺序存储结构要求所有的元素依次存放在一片连续的存储空间中,而链式存储结构,无需占用一整块存储空间。但为了表示结点之间的关系,需要给每个结点附加指针字段,用于存放后继元素的存储地址。所以链式存储结构通常借助于程序设计语言的指针类型来描述。 5选择题 (1)在数据结构中,从逻辑上可以把数据结构分成()。 a动态结构和静态结构 b紧凑结构和非紧凑结构c线性结构和非线性结构d内部结构和外部结构c (2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。 a存储结构b存储
15、实现 c逻辑结构d运算实现 (3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。 a数据具有同一特点 b不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致 c每个数据元素都一样 d数据元素所包含的数据项的个数要相等b (4)以下说法正确的是()。 a数据元素是数据的最小单位 b数据项是数据的基本单位 c数据结构是带有结构的各数据项的集合 d一些表面上很不相同的数据可以有相同的逻辑结构d 解释:数据元素是数据的基本单位,数据项是数据的最小单位,数据结构是带有结构的各数据元素的集合。 (5)算法的时间复杂度取决于( )。 a问题的规模算法的时间复杂度不仅与问题的
16、规模有关,还与问题的其他因素有关。如某些排序的算法,其执行时间与待排序记录的初始状态有关。为此,有时会对算法有最好、最坏以及平均时间复杂度的评价。 (6)以下数据结构中,()是非线性数据结构 a树 b字符串 c队列 d栈a 6试分析下面各程序段的时间复杂度。 (1)x=90; y=100; while(y0) if(x100) x=x-10;y-; else x+;o(1)程序的执行次数为常数阶。 b待处理数据的初态 da和b c计算机的配置【篇三:数据结构(c语言版)第2版习题答案严蔚敏】p class=txt 2015.3目 录 第1章 绪论 . 1 2章 线性表 . 5 3章 栈和队列. 14 4章 串、数组和广义表 . 27 5章 树和二叉树 . 34 6章 图 . 44 7章 查找 . 55 8章 排序 . 66第1章 绪论 顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1