知识大全 数据结构与算法概论复习习题[2]
Posted 函数
篇首语:如果你等到每件事都确定是对的才去做,那你也许永远都成不了什么事。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据结构与算法概论复习习题[2]相关的知识,希望对你有一定的参考价值。
在程序设计中 常用下列三种不同的出错处理方式( ) 用exit语句终止执行并报告错误
( ) 以函数的返回值区别正确返回或错误返回
( ) 设置一个整型变量的函数参数以区别正确返回或某种错误返回
试讨论这三种方法各自的优缺点
解 ( )exit常用于异常错误处理 它可以强行中断程序的执行 返回操作系统
( )以函数的返回值判断正确与否常用于子程序的测试 便于实现程序的局部控制
( )用整型函数进行错误处理的优点是可以给出错误类型 便于迅速确定错误
在程序设计中 可采用下列三种方法实现输出和输入
( ) 通过scanf和printf语句
( ) 通过函数的参数显式传递
( ) 通过全局变量隐式传递
试讨论这三种方法的优缺点
解 ( )用scanf和printf直接进行输入输出的好处是形象 直观 但缺点是需要对其进行格式控制 较为烦琐 如果出现错误 则会引起整个系统的崩溃
( )通过函数的参数传递进行输入输出 便于实现信息的隐蔽 减少出错的可能
( )通过全局变量的隐式传递进行输入输出最为方便 只需修改变量的值即可 但过多的全局变量使程序的维护较为困难
设n为正整数 试确定下列各程序段中前置以记号@的语句的频度
( ) i= ; k= ;
while(i<=n )
@ k += *i;
i++;
( ) i= ; k= ;
do
@ k += *i;
i++;
while(i<=n );
( ) i= ; k= ;
while (i<=n )
i++;
@ k += *i;
( ) k= ;
for(i= ; i<=n; i++)
for(j=i; j<=n; j++)
@ k++;
( ) for(i= ; i<=n; i++)
for(j= ; j<=i; j++)
for(k= ; k<=j; k++)
@ x += delta;
( ) i= ; j= ;
while(i+j<=n)
@ if(i>j) j++;
else i++;
( ) x=n; y= ; // n是不小于 的常数
while(x>=(y+ )*(y+ ))
@ y++;
( ) x= ; y= ;
while(y> )
@ if(x> ) x = ; y ;
else x++;
假设n为 的乘幂 并且n> 试求下列算法的时间复杂度及变量count的值(以n的函数形式表示)
int Time(int n)
count = ;x= ;
while(x<n/ )
x *= ;count++;
return count;
已知有实现同一功能的两个算法 其时间复杂度分别为O( n)和O(n ) 假设现实计算机可连续运算的时间为 秒( 多天) 又每秒可执行基本操作(根据这些操作来估算算法时间复杂度) 次 试问在此条件下 这两个算法可解问题的规模(即n值的范围)各为多少?哪个算法更适宜?请说明理由
则对于同样的循环次数n 在这个规模下 第二种算法所花费的代价要大得多 故在这个规模下 第一种算法更适宜
设有以下三个函数
请判断以下断言正确与否
( ) f(n)是O(g(n))
( ) h(n)是O(f(n))
( ) g(n)是O(h(n))
( ) h(n)是O(n )
( ) h(n)是O(nlogn)
解 ( )对 ( )错 ( )错 ( )对 ( )错
试设定若干n值 比较两函数n 和的增长趋势 并确定n在什么范围内 函数n 的值大于的值
cha138/Article/program/sjjg/201311/23631
相关参考
第章 绪论 简述下列术语数据数据元素数据对象数据结构存储结构数据类型和抽象数据类型 解数据是对客观事物的符号表示在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称
要求同题试对单链表编写求C的算法 解 //将AB求交后的结果放在C表中并删除B表 StatusListCross_L(Li
已知有一个单向循环链表其每个结点中含三个域predata和next其中data为数据域next为指向后继结点的指针域pre也为指
已知L是无表头结点的单链表且P结点既不是首元结点也不是尾元结点试从下列提供的答案中选择合适的语句序列 a在P结点后插入S结点的语句序列是__________________ b在P结点前插入S
指出以下算法中的错误和低效之处并将它改写为一个既正确又高效的算法 StatusDeleteK(SqList&aintiintk) //本过程从顺序存储结构的线性表a中删除第i个元素
试写一算法对单链表实现就地逆置 解 //带头结点的单链表的逆置 StatusListOppose_L(LinkList&L) LinkListpq; p=L; p=p>
已知指针la和lb分别指向两个无头结点单链表中的首元结点下列算法是从表la中删除自第i个元素起共len个元素后将它们插入到表lb中第i个元素之前试问此算法是否正确?若有错请改正之 StatusD
对题的条件作以下两点修改对单链表重新编写求得表C的算法 ()假设在同一表(A或B)中可能存在值相同的元素但要求新生成的表C中的
假设在算法描述语言中引入指针的二元运算异或若a和b为指针则a⊕b的运算结果仍为原指针类型且 a⊕(a⊕b)=(a⊕a)⊕b=b
已知AB和C为三个递增有序的线性表现要求对A表作如下操作删去那些既在B表中出现又在C表中出现的元素试对顺序表编写实现上述操作的算法并分析你的算法的时间复杂度(注意题中没有特别指明同一表中的元素值各