数据结构_严蔚敏_清华大学_习题及答案.doc

数据结构_严蔚敏_清华大学_习题及答案.doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构_严蔚敏_清华大学_习题及答案

第1章 绪论 2 1、填空题 2 2、应用题 2 第2章 线性表 3 1、填空题 3 2、选择题 3 3、判断题 4 4、程序设计题 4 第3章 栈和队列 7 1、填空题 7 2、选择题 7 3、判断题 7 第4章 串 8 1、选择题 8 2、判断题 8 第5章 数组和广义表 8 1、填空题 8 2、选择题 8 3、判断题 9 第6章 树和二叉树 9 1、填空题 9 2、选择题 9 3、判断题 10 4、应用题 10 5、读程序写结果 17 第7章 图 18 1、填空题 18 2、选择题 18 3、判断题 19 4、应用题 19 5、程序设计题 24 第8章 动态存储管理 24 1、填空题 24 2、选择题 24 3、判断题 24 4、应用题 24 5、程序设计题 24 第9章 查找 24 1、选择题 24 2、判断题 25 3、应用题 26 4、程序设计题 27 第10章内部排序 28 1、填空题 28 2、选择题 28 3、判断题 29 4、应用题 29 第11章外部排序 30 第12章文件 30 第1章 绪论1、填空题 1.常见的数据结构有_线性__结构,__树形___结构,__图形__结构等三种。 2.常见的存储结构有__顺序存储_______结构,__链式存储____结构等两种。 3.数据的基本单位是_数据元素___,它在计算机中是作为一个整体来处理的。 4.数据结构中的结构是指数据间的逻辑关系,常见的结构可分为两大类,__线性结构____和__非线性结构___。 2、应用题 1、给出以下算法的时间复杂度. void fun(int n) { int i=1,k=100; while(i<n) { k=k+1; i=i+2; } } 时间复杂度为____O(n)_____。 2、给出以下算法的时间复杂度. void fun2(int n) { int i=1,k=100; while(i<n) { i=i*10; k=k+1; } } 时间复杂度为____O(log n)___________。 第2章 线性表 1、填空题 1. 线性表按照存储结构不同主要有两种实现方式,一种是__顺序_表,另一种是___链___表。 2.顺序表采用__随机___访问机制对数据元素进行访问。 3.若在单链表结点p的后面插入一个新的结点s,则其操作序列为: ①____s->next=p->next_____________; ②____p->next=s___________________; 4.在单向链表中,若要删除某个结点p,一般要找到__p的前趋__结点,才能实现该操作。 2、选择题 将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是 A 。 (A)n??? (B)2n-1???(C)2n??? (D)n-1 在单链表中,如果在结点p之后插入一个新结点s,其操作为 A 。 (A)s->next=p->next; p->next=s; (B)p->next=s; s->next=p->next; (C)s->next=p; p->next=s->next; (D)p->next=s; s->next=p; 3.若长度为n的线性表采用顺序存储结构,在其第i个位置删除一个元素的算法的平均时间复杂度为(??C? )。(1≤i≤n) A.O(0)??? B.O(1)??? C.O(n)??? D.O(n2) 4. 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素需要移动的元素个数为(??B? )。(1≤i≤n+1) A.n-i?? B.n-i+1??? C. i??? D.n-i-1 3、判断题 1.线性表中每一个元素都有一个前驱和一个后继。( × ) 4、程序设计题 1、单链表的结点结构定义如下: struct LinkNode { LinkNode *next; int data; }; 请根据述函数的功能写程序。 void Insert(LinkNode *h,LinkNode *s) {//h指向链表的头结点(即使链表中没有元素,头结点也存在。) //链表中元素已经递增有序 //函数功能为将结点s插入到链表h中。插入后链表仍然保持递增的顺序 LinkNode *p,*q;//q指向p的前驱 q=h; p=h->next; while(p) { if(p->data>s->data) {//寻找到插入点位置,插入s q->next=s; s->next=p; return; } else { q=p; (1分) p=p->next; (1分) } } //当表中没有比s

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档