Advertisement

C语言数据结构第一章作业答案参考

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本资源提供了C语言数据结构课程第一章习题的标准解答与解析,帮助学生理解和掌握基本概念和编程技巧。 第一章 绪论作业答案(共50分) 一、分析如下程序中 (1)~ (10)各语句的频度。(每个1分,共10分) ```c Ex( ){ int i , j , t ; (1) for(i=1 ; i<10 ; i++) //n = (2) printf(\n %d , i ); //n = (3) for(i=1; i<=2; i++) //n = (4) printf(\n); //n = (5) for(i=1; i<=9; i++) //n = { (6) for(j=1; j <= i ; j++) //n = { (7) t = i * j ; //n = (8) printf(],t); //n = } (9) for(j=1; j<3 ; j++) //n = (10) printf(\n); //n = } } ``` 二、分析如下程序段中指定语句的执行次数(共6分)。 有如下程序段: ```c x = 91 ; y = 100 ; while(y > 0){ if(x > 100) { x -= 10 ; y -- ; } else x ++ ; } ``` 问if语句执行了多少次?(2分) `y--` 执行了多少次? (2分) `x++` 执行了多少次? (2分) 三、回答问题(共25分) 书中16页的起泡排序如下: ```c void bubble_sort(int a[],int n){ //将a中整数序列重新排列成自小至大有序的整数序列。 for(i=n-1,change=TRUE;i>=1&&change;--i){ change=FALSE; for(j=0;ja[j+1]){ a[j] <--> a[j+1]; change = TRUE; } } }//bubble_sort ``` 1.(共15分)分析该算法的最佳情况、最坏情况和平均情况下各自的时间复杂度。(给出分析思路与过程) (1) 最佳情况的时间复杂度分析: (5分) (2) 最坏情况的时间复杂度分析: (5分) (3) 平均情况的时间复杂度分析:(5分) 2.(共10分)比较与C语言书中的起泡排序异同,并从时空效率角度说明谁更优。 四、完成如下选择题(每小题3分,共9分)。 1.设f为原操作,则如下算法的时间复杂度是( ) ```c for (i = 1; i*i<= n; i++) f; ``` A. O(n) B. O(log2n ) C.O(n/2) D. 都不对 2.算法的时间复杂度与( )有关。 A.问题的规模 B.计算机硬件性能 C.编译程序的质量 D.程序设计语言 3.有如下程序段: ```c for(i=n-1;i>=1;i--) for(j=1;j<=i;j++) if(A[j]>A[j+1]) A[j]与A[j+1]对换; ``` 其中n为正整数,则算法在最坏情况下的时间复杂度为( )。 A.O(n) B. O(nlog2n) C.O(n3 ) D. O(n2),

全部评论 (0)

还没有任何评论哟~
客服
客服
  • C
    优质
    本资源提供了C语言数据结构课程第一章习题的标准解答与解析,帮助学生理解和掌握基本概念和编程技巧。 第一章 绪论作业答案(共50分) 一、分析如下程序中 (1)~ (10)各语句的频度。(每个1分,共10分) ```c Ex( ){ int i , j , t ; (1) for(i=1 ; i<10 ; i++) //n = (2) printf(\n %d , i ); //n = (3) for(i=1; i<=2; i++) //n = (4) printf(\n); //n = (5) for(i=1; i<=9; i++) //n = { (6) for(j=1; j <= i ; j++) //n = { (7) t = i * j ; //n = (8) printf(],t); //n = } (9) for(j=1; j<3 ; j++) //n = (10) printf(\n); //n = } } ``` 二、分析如下程序段中指定语句的执行次数(共6分)。 有如下程序段: ```c x = 91 ; y = 100 ; while(y > 0){ if(x > 100) { x -= 10 ; y -- ; } else x ++ ; } ``` 问if语句执行了多少次?(2分) `y--` 执行了多少次? (2分) `x++` 执行了多少次? (2分) 三、回答问题(共25分) 书中16页的起泡排序如下: ```c void bubble_sort(int a[],int n){ //将a中整数序列重新排列成自小至大有序的整数序列。 for(i=n-1,change=TRUE;i>=1&&change;--i){ change=FALSE; for(j=0;ja[j+1]){ a[j] <--> a[j+1]; change = TRUE; } } }//bubble_sort ``` 1.(共15分)分析该算法的最佳情况、最坏情况和平均情况下各自的时间复杂度。(给出分析思路与过程) (1) 最佳情况的时间复杂度分析: (5分) (2) 最坏情况的时间复杂度分析: (5分) (3) 平均情况的时间复杂度分析:(5分) 2.(共10分)比较与C语言书中的起泡排序异同,并从时空效率角度说明谁更优。 四、完成如下选择题(每小题3分,共9分)。 1.设f为原操作,则如下算法的时间复杂度是( ) ```c for (i = 1; i*i<= n; i++) f; ``` A. O(n) B. O(log2n ) C.O(n/2) D. 都不对 2.算法的时间复杂度与( )有关。 A.问题的规模 B.计算机硬件性能 C.编译程序的质量 D.程序设计语言 3.有如下程序段: ```c for(i=n-1;i>=1;i--) for(j=1;j<=i;j++) if(A[j]>A[j+1]) A[j]与A[j+1]对换; ``` 其中n为正整数,则算法在最坏情况下的时间复杂度为( )。 A.O(n) B. O(nlog2n) C.O(n3 ) D. O(n2),
  • C
    优质
    本资料提供了C语言数据结构课程第五章作业的答案和解析,旨在帮助学生理解和掌握相关知识点与解题技巧。 1.两个串相等的充要条件是( )。A.串长度相等 B.串长度任意 C.串中各位置字符任意 D.串中各位置字符均对应相等 2. 对称矩阵的压缩存储:以行序为主序存储下三角中的元素,包括对角线上的元素。二维下标为( i, j ), 存储空间的一维下标为k,给出k与 i, j (i
  • C
    优质
    本资源提供了针对C语言数据结构课程第二章习题的答案和解析,旨在帮助学生理解和掌握相关知识点,提高编程能力。 1. 顺序存储结构中的数据元素之间的逻辑关系是由(C)表示的;链接存储结构中的数据元素之间逻辑关系则是通过(D)来体现。 2. 线性表被定义为一种有限序列,其中可能存在空的情况,即选项A正确描述了线性表的特点:可以为空但并非必须如此。 3. 若已知一维数组采用顺序存储方式,并且每个成员占用4个字节的内存空间。假设第9位元素地址是144,则根据计算公式推断出第一个元素的位置应为(D)即112,因为该位置可以通过减去8*4得到。 4. 在单链表中删除指针p所指向节点之后的那个结点时,正确的操作步骤应该是选项A:将p->next指向当前的下一个结点的下一个结点(p->next->next)来完成跳过目标节点的效果。 5. 如果频繁的操作是在一个单向列表末尾添加或移除元素,则采用(C)带头指针的双循环链表结构可以最有效地节省时间,因为它提供了快速访问两端的能力而无需遍历整个结构。 6.对于二维数组A[7][8]以列为主序存储方式下计算出A[5][3]所在的一维索引值为(D)29。此题考查对多维度数据在内存中如何线性化处理的理解,通过公式推导得出结果。 二、填空题答案如下: 1.顺序表插入新元素的代码片段展示了当需要扩展存储空间时会使用realloc函数来增加数组容量,并且会在指定位置i前进行后移操作以确保新的数据e能被正确放置。最后更新长度并返回成功状态。 2. 删除双向链表节点的操作涉及修改前后指针指向,使它们跳过要删除的结点p;之后释放该结点内存空间从而完成整个过程。 三、编程题: 1. 集合求差集算法的设计目标是在不使用额外存储的情况下从一个集合中移除另一个集合中的所有元素。具体而言,先遍历B找到与A共有的值并标记为特定字符(如##);然后再次扫描A,将未被标记的元素向前移动以填补空缺位置,并更新长度。 2. 删除单向循环链表内指定数值e的所有节点可以通过从头结点开始逐个检查每个后续节点的数据来实现。如果找到匹配项,则通过修改指针关系和释放内存完成删除操作;否则继续前进直到回到起点为止。此算法的时间复杂度为O(n),其中n代表列表长度,因需要最多遍历整个链表一次才能确定所有待移除的元素位置。 以上是关于数据结构中几个关键概念与实践应用题目的详细解析和解答策略说明。
  • C
    优质
    本资料提供了C语言数据结构课程第三章作业的答案和解析,帮助学生理解并掌握相关概念与算法实现。 1. 经过以下栈运算后,x的值是(A)。InitStack(s); Push(s,a); Push(s,b); Pop(s,x); Gettop(s,x); 2.循环队列存储在数组A[0..m]中,则入队时的操作为(C)。 3. 栈和队列的共同点是(C)。 4. 若用一个大小为6的数组来实现循环队列,且当rear 和 front 的值分别为 0 和 3。当从队列中删除一个元素,再插入两个元素后,rear 和 front 的值分别为:(B)。 5.程序填顺序循环队列的类型定义如下: typedef int ET; typedef struct{ ET *base; int Front; int Rear; int Size; }Queue; Queue Q; 队列Q是否“满”的条件判断为(C)。 6. 若进栈序列为1,2,3,4,进栈过程中可以出栈,则(C)不可能是一个出栈序列。 7.向顺序存储的循环队列Q中插入新元素的过程分为三步:(B)。 8. 关于栈和队列,说法不妥的是(D)。 9. 若用数组S[0..m]作为两个栈S1和S2的共同存储结构,对任何一个栈,只有当S全满时才不能作入栈操作。为这两个栈分配空间的最佳方案是(A)。 二、程序填空题(没特别标注分数的空的为3分,共 23 分)。 1. 下面的算法是将一个整数e压入堆栈S,请在空格处填上适当的语句实现该操作: typedef struct{ int *base; int *top; int stacksize; }SqStack; int Push(SqStack S,int e) { if ( S.top- S.base>= S.stacksize ) { S.base=(int *) realloc(S.base,(S.stacksize+1)*sizeof(int)); if( !S.base ) { printf(Not Enough Memory!\n); return(0); } S.top= S.base+ S.stacksize ; S.stacksize= S.stacksize+1 ; } *S.top++=e; return 1; } 2. 在表达式:6+5+3*7/(4+9/3-2)求值过程中,处理到2时刻,运算符栈的状态为: + / ( - ,操作数栈的内容为11,21,7,2。 3.递调用时,处理参数及返回地址,要用一种称为 栈 的数据结构。 4. 设循环队列中数组的下标范围是1-n,其头尾指针分别为f和r,则其元素个数为(r-f+n) mod n。
  • 1
    优质
    本章节提供了针对第七章课程内容的标准作业解答与解析,旨在帮助学生检验学习成果、理解解题思路,并为教师提供教学辅助材料。 第七章 作业参考答案 1. 在三角形计算任务中,请输入三角形的三个边长:A、B 和 C。如果这三边无法构成一个有效的三角形,则提示错误信息;若能构成,需计算并给出该三角形的周长。
  • CPTA函.html
    优质
    本文件包含了C语言程序设计课程中PTA平台上所有函数相关作业的答案和解析,适合需要完成相应练习的学生参考学习。 第五章 C语言 PTA函数——作业-答案
  • C PTA .html
    优质
    本文件提供了C语言PTA平台上的数组相关作业题目的详细解答,帮助学习者巩固和理解数组操作、应用及其常见问题解决方法。 第四章 C语言 PTA数组——作业-答案.html
  • 教程(5版)课后题
    优质
    《数据结构教程(第5版)》第四章课后习题解答详尽解析,帮助读者深入理解数据结构原理与应用。 数据结构教程(第5版)第四章串的课后题参考答案,由清华大学出版社出版,李春bao主编。
  • 教程(五版)课后题
    优质
    《数据结构教程(第五版)》第二章课后习题解答,为学习者提供了全面、详细的解题指导与分析,帮助读者加深理解并巩固所学知识。 《数据结构教程(第5版)》第二章线性表的课后题参考答案,由清华大学出版社出版,李春bao主编。
  • 教程(五版)课后题
    优质
    《数据结构教程(第五版)》第八章课后习题的答案解析,旨在帮助学生理解和掌握本章节的核心知识点与解题技巧。 《数据结构教程(第5版)》第八章图的课后题参考答案由清华大学出版社出版,李春葆主编。