数据结构的习题-3章.docVIP

  • 73
  • 0
  • 约1.16万字
  • 约 9页
  • 2017-03-06 发布于贵州
  • 举报
数据结构的习题-3章

第一章 绪论 1-1 简述下列概念:数据、数据元素、数据类型、数据结构、逻辑结构、存储结构、线性结构、非线性结构。设三个函数f,g,h分别为 f n 100n3+n2+1000 , g n 25n3+5000n2 , h n n1.5+5000nlgn 请判断下列关系是否成立: 1 f n O g n 2 g n O f n 3 h n O n1.5 4 h n O nlgn 1-3 设n为正整数,利用大O记号,将下列程序段的执行时间表示为n的函数。 1 i 1; k 0; while i n k k+10*i;i++; ◆ T n n-1 ∴ T n O n ◇ 这个函数是按线性阶递增的 2 i 0; k 0; do k k+10*i; i++; while i n ;?◆ T n n ∴ T n O n ◇ 这也是线性阶递增的 3 i 1; j 0; while i+j n if i j j++; else i++; ◆ T n n/2 ∴ T n O n ◇ 虽然时间函数是n/2,但其数量级仍是按线性阶递增的。 4 x n; // n 1 while x y+1 * y+1 y++; ◆ T n n1/2 ∴ T n O n1/2 ◇ 最坏的情况是y 0,那么循环的次数是n1/2次,这是一个按平方根阶递增的函数。 5 x 91; y 100;? while y 0 if x 100 x x-10;y--; else x++;◆ T n O 1 ◇ 这个程序看起来有点吓人,总共循环运行了1000次,但是我们看到n没有? 没。这段程序的运行是和n无关的,就算它再循环一万年,我们也不管他,只是一个常数阶的函数。 按增长率由小至大的顺序排列下列各函数:2100, 3/2 n, 2/3 n, nn ,n0.5 , n! ,2n ,lgn ,nlgn, n 3/2 2/3 ^n 2^100 lgn √n n^ 3/2 n^lgn 3/2 ^n 2^n n! n^n 完成复数的抽象数据类型各种操作的实现,并用客户程序进行测试。要求提交源程序的打印稿及运行结果截图并贴在作业本上。 使用复数数据类型的客户程序: #include “stdafx.h” #include “CpxNum.h” int main int argc, char * argv[] cpxNum c1,c2; double real, imag; cout “请输入复数的实部和虚部:”; cin real imag; assign c1, real, imag ; cout ”生成的复数是:”; print c1 ; ......; cout ”c1+c2的结果是:”; print cplus c1,c2 ; cout endl; ......; return 0 ; 称一个函数g n 是O f n ,当且仅当存在常数c 0和n0 0,对一切n n0均有|g n | c|f n |成立,也称函数g n 以f n 为界或者称g n 囿于f n 。记作g n O f n 。 定义:如果一个问题的规模是n,解这一问题的某一算法所需要的时间为T n ,它是n的某一函数。T n 称为这一算法的“时间复杂度”。当输入量n逐渐加大时,时间复杂度的极限情形称为算法的“渐近时间复杂度”。   我们常用大O表示法表示时间复杂度,注意它是某一个算法的时间复杂度。大O表示只是说有上界,由定义如果f n O n ,那显然成立f n O n^2 ,它给你一个上界,但并不是上确界,但人们在表示的时候一般都习惯表示前者。此外,一个问题本身也有它的复杂度,如果某个算法的复杂度到达了这个问题复杂度的下界,那就称这样的算法是最佳算法。 常见的时间复杂度,按数量级递增排列依次为:常数阶O 1 、对数阶O log2n 、线性阶O n 、线性对数阶O nlog2n 、平方阶O n^2 、立方阶O n^3 、k次方阶O n^k 、指数阶O 2^n 。 试描述头指针、头结点、开始结点的区别、并说明头指针和头结点的作用。何时选用顺序表、何时选用链表作为线性表的存储结构为宜?在顺序表中插入和删除一个结点需平均移动多少个结点?具体的移动次数取决于哪两个因素?在单链表、双链表和单循环链表中,若仅知道指针p指向某结点,不知道头指针,能否将结点*p从相应的链表中删去?若可以,其时间复杂度各为多少?下述算法的功能是什么? LinkList Demo LinkList L // L 是无头结点单链表 ? ListNode *Q,*P; ? if LL- next Q L;L

文档评论(0)

1亿VIP精品文档

相关文档