833新媒体与全球化

833新媒体与全球化

2019年硕士研究生入学考试科目《新媒体与全球化》考试大纲

一级学科硕士点召集人签名:(学院盖章)学院分管院长签名:

数据结构各章作业题目

第一章作业 一、选择题 1.被计算机加工的数据元素不是孤立的,它们彼此之间一般存在某种关系,通常把数据元素之间的 这种关系称为( )。 A. 规则 B. 结构 C. 集合 D. 运算 2.在Data_Structure=(D,S)中,D是( )的有限集合。 A. 数据元素 B. 算法 C. 数据操作 D.数据对象 3.计算机所处理的数据一般具有某种关系,这是指( )之间存在的某种关系。 A. 数据与数据 B. 数据元素与数据元素 C. 元素内数据项与数据项 D. 数据文件内记录与记录 4.顺序存储表示中数据元素之间的逻辑关系是由( )表示的。 A. 指针 B. 逻辑顺序 C. 存储位置 D. 问题上下文 5.链接存储表示中数据元素之间的逻辑关系是由( )表示的。 A. 指针 B. 逻辑顺序 C. 存储位置 D. 问题上下文 6.从逻辑上可将数据结构分为( )。 A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构 C. 内部结构和外部结构 D. 线性结构和非线性结构 7.以下选项属于线性结构的是( )。 A. 广义表 B. 二叉树 C. 串 D. 稀疏数组 8.以下选项属于非线性结构的是( )。 A. 广义表 B. 队列 C. 优先队列 D. 栈 9.以下属于逻辑结构的是( ) A. 顺序表 B. 散列表 C. 有序表 D. 单链表 10.一个完整的算法应该具有( )等特性。 A. 可执行性、可修改性和可维护性 B. 可行性、确定性和有穷性

C. 确定性、有穷性和可靠性 D. 正确性、可读性和有效性 11.若一个问题既可以用迭代方法也可以用递归方法求解,则( )的方法具有更高的时空效率。 A. 迭代 B. 递归 C. 先递归后迭代 D. 先迭代后递归 12.一个递归算法必须包括( ) A. 递归部分 B. 终止条件和递归部分 C. 迭代部分 D. 终止条件和迭代部 分 13.算法的时间复杂度与( )有关。 A. 问题规模 B. 源程序长度 C. 计算机硬件运行速度 D. 编译后执行程序的 质量 二、指出下列各算法的功能并求出其时间复杂度。 (1) int Prime(int n){ int i=2,x=(int)sqrt(n); //sqrt(n)为求n的平方根 while(i<=x){ if(n%i==0)break; i++; } if(i>x) return 1; else return 0; } (2) int sum1(int n){ int p=1,s=0; for(int i=1;i<=n;i++){ p*=i;s+=p;

数据结构 张铭 习题

第一章概论练习答案上一章下一章 本章练习题 答案分页: [1] [2] 1、解答: 【题意解析】 本题指定了字符的顺序,所以不能按照ASCII字符顺序来排序。 【典型错误】 1.不按照题目给出的字符顺序进行排序,而按照ASCII字符顺序。 2.没有给出排序结果 3.认为顺序存储法比较节约空间,事实上由于字符空隙,顺序法并不节约空间; 4. 没有比较各种方法的优劣。 【数据结构】 本题可以采用的存储结构有顺序(数组)和链表。 1. 用二维数组array[NUMOFSTRING][MAX_LENGTH],此题可定义const int 优点:为紧凑存储结构,没有用于存储其他附加的信息,表示方法比较直观简单,代码实现十分容易。 缺点:为每个但此都开辟了同样长度的空间,造成空间的浪费。 2. 用链表的结构存储,结点为结构 struct strings{ char string[MAX_LENGTH]; strings *pNext; }

优点:如果有后续工作如反复增删结点,效率很高.并且可以使用不连续的空间。 缺点:操作过程相对复杂,容易出错.而且排序过程需要从表头开始沿链索一个结点一个结点的比较搜索,相当费时。 3. 索引存储 是顺序存储的一种推广.使用一个字符串char data[500],其中将大小长度不等的数据结点(单词)顺序存储其中.令使用一个字符指针数组 char* index[n],存储一系列指针,每个指针指向存储区域的一个数据结点. 排序时,直接对index中的地址值进行调换修改即可,而不用修改data中的任何内容。索引存储的优点是:由于单词长度不同,在存储时充分考虑了这个因素,可以节省空间,此外由于交换的不是单词本身而是单词的地址,可以节省时间,从时空两方面得到了优化。 【排序结果】 B899,B9,CRSI,CXY,PAB,PABC,5C,7 2、解答: 【题意解析】 本题没有指明这100个实数是否存在相等的情况,在这里,我们考虑存在多个最大值的情形(即100个实数可能有相等的),为了保存其位置,利用int pos[100](因为有可能这100个实数都是相同的)来保存最大值的所有位置。 【典型错误】 1. 用int类型的数组来保存这100个元素,没有注意题目中说的是“每个元素的值都是实数”。 2. 求最大值的时候代码如下: temp=0; for(int i=0;i<100;i++) if(Num[i]>temp) temp=Num[i]; 评注:这样是错误的,例如:当Num[i]都是负数的时候。 3. 未考虑可能存在多个最大值的情况,只保存了一个最大值的位置。 【数据结构】 本题可以采用的存储结构有顺序(数组),链表和索引。本题最好使用数组存储结构。由于其他存储方法需要记录附加信息,使得空间有效利用不能够最大化。因此在空间上顺序存储是最优的。时间上,无论如何此题都要遍历所有的数,因此O(n)为可能的最优时间代价。加之此题的规模较小,因此使用大家最熟悉的顺序存储是较为优先的选择。 【算法描述】 1. 由于最大值可能不止一个,甚至可能都是最大值,所以创建一个长度为100的整型数组pos[100],用来记录最大值的位置。 2. 初始情况,取这个数组的第一个位置为最大值所在的位置,存入变量position中。

数据结构与算法基础知识总结

数据结构与算法基础知识总结 1 算法 算法:是指解题方案的准确而完整的描述。 算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。 算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括: (1)可行性; (2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性; (3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义; (4)拥有足够的情报。 算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 指令系统:一个计算机系统能执行的所有指令的集合。 基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的控制结构:顺序结构、选择结构、循环结构。 算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。 算法复杂度:算法时间复杂度和算法空间复杂度。 算法时间复杂度是指执行算法所需要的计算工作量。 算法空间复杂度是指执行这个算法所需要的内存空间。 2 数据结构的基本基本概念 数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; (2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。 数据结构是指相互有关联的数据元素的集合。 数据的逻辑结构包含: (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系。 数据的存储结构有顺序、链接、索引等。 线性结构条件:

(1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。 3 线性表及其顺序存储结构 线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。 在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。 非空线性表的结构特征: (1)且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件; (3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。 线性表的顺序存储结构具有以下两个基本特点: (1)线性表中所有元素的所占的存储空间是连续的; (2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 ai的存储地址为:adr(ai)=adr(a1)+(i-1)k,,adr(a1)为第一个元素的地址,k代表每个元素占的字节数。 顺序表的运算:插入、删除。(详见14--16页) 4 栈和队列 栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。 栈按照“先进后出”(filo)或“后进先出”(lifo)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom表示栈底。 栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算;(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。 队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。rear指针指向队尾,front指针指向队头。 队列是“先进行出”(fifo)或“后进后出”(lilo)的线性表。 队列运算包括(1)入队运算:从队尾插入一个元素;(2)退队运算:从队头删除一个元素。循环队列:s=0表示队列空,s=1且front=rear表示队列满

《数据结构与算法》课后习题答案

2.3 课后习题解答 2.3.2 判断题 1.线性表的逻辑顺序与存储顺序总是一致的。(×) 2.顺序存储的线性表可以按序号随机存取。(√) 3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。(×) 4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此属于同一数据对象。(√) 5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定相邻。(×) 6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。(√)7.线性表的链式存储结构优于顺序存储结构。(×) 8.在线性表的顺序存储结构中,插入和删除时移动元素的个数与该元素的位置有关。(√) 9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。(√)10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。(×) 11.静态链表既有顺序存储的优点,又有动态链表的优点。所以它存取表中第i个元素的时间与i无关。(×) 12.线性表的特点是每个元素都有一个前驱和一个后继。(×) 2.3.3 算法设计题 1.设线性表存放在向量A[arrsize]的前elenum个分量中,且递增有序。试写一算法,将x 插入到线性表的适当位置上,以保持线性表的有序性,并且分析算法的时间复杂度。【提示】直接用题目中所给定的数据结构(顺序存储的思想是用物理上的相邻表示逻辑上的相邻,不一定将向量和表示线性表长度的变量封装成一个结构体),因为是顺序存储,分配的存储空间是固定大小的,所以首先确定是否还有存储空间,若有,则根据原线性表中元素的有序性,来确定插入元素的插入位置,后面的元素为它让出位置,(也可以从高下标端开始一边比较,一边移位)然后插入x ,最后修改表示表长的变量。 int insert (datatype A[],int *elenum,datatype x) /*设elenum为表的最大下标*/ {if (*elenum==arrsize-1) return 0; /*表已满,无法插入*/ else {i=*elenum; while (i>=0 && A[i]>x) /*边找位置边移动*/ {A[i+1]=A[i]; i--; } A[i+1]=x; /*找到的位置是插入位的下一位*/ (*elenum)++; return 1; /*插入成功*/ } } 时间复杂度为O(n)。

833计算机学科专业基础综合

833“计算机学科专业基础综合”复习参考提纲 一、考察目标 计算机学科专业基础综合考试涵盖数据结构、计算机组织与体系结构、操作系统和计算机网络等学科专业基础课程。要求考生比较系统地掌握上述专业基础课程的基本概念、基本原理和基本方法,能够综合运用所学的基本原理和基本方法分析、判断和解决有关理论问题和实际问题。 二、考试形式和试卷结构 1、试卷满分及考试时间:本试卷满分为150,考试时间为180分钟 2、答题方式:闭卷,笔试 3、试卷内容结构:数据结构45分、计算机组织与体系结构45分、操 作系统35分、计算机网络25分 三、考察范围 数据结构: 【总体要求】 “数据结构”要求学生掌握数据结构的基本理论和基本方法,使学生具备基本的数据结构分析、设计、求解实际问题的能力。要求掌握数据结构的基本概念、基本原理和基本方法;掌握线性表、树与二叉树、图的逻辑结构、物理结构、基本操作,以及基本操作在不同的物理结构上的实现,并能够对操作算法进行基本的时间复杂度和空间复杂度进行分析;掌握基本的查找和排序方法,并能够利用这些方法对实际问题进行分析和求解,具备采用C或C++或JA V A 语言设计与实现算法的能力。 (一)数据结构基本概念 1.复习内容 数据结构、算法的基本定义,数据结构的逻辑结构和物理结构,算法的性能评价方法。 2.具体要求 数据结构的定义

数据结构的逻辑结构 数据结构的物理结构 算法的概念和算法的性能评价(时间复杂度) (二)线性表(大题考点) 1.复习内容 线性表的概念和基本运算,线性表的顺序存储和链式存储,线性表的基本运算在顺序存储和链式存储结构上的实现。 2.具体要求 线性表的概念和基本运算 线性表的顺序存储 线性表的链式存储 线性表的应用 (三)栈和队列(选择题考点) 1.复习内容 栈和队列的基本概念、基本操作和存储结构。 2.具体要求 栈和队列的基本概念和基本操作 栈和队列的顺序存储结构 栈和队列的链式存储结构 栈和队列的应用 (四)串 1.复习内容 串的基本概念、存储结构和模式匹配算法 2.具体要求 串的基本概念和基本操作 串的顺序存储结构 串的链式存储结构 模式匹配算法 (五)数组和广义表

数据结构与算法-北大 HW11 B_B+树

北京大学信息学院2007年秋季学期《数据结构与算法A(实验班)》课程作业 张铭编写并发布 mzhang@https://www.360docs.net/doc/c95573825.html, 第11次作业,12月17日(周一)课前提交,电子稿提交时间12月17日开课之前提交。 11.1 偶数阶的B 树插入上溢出时,中 位数有两个,需要注意采用统一的策略。例如,取第二个中位数, 即分裂后左(1)/2m ?????个关键码,右(1)/2m ?????; 或者取第一个中位数,分裂后左(1)/2m ????? 右(1)/2m ?????。请画出对右图的4阶B 树进行下来操作后的B 树。 (1) 分裂时采用第2个中位数为 分界码,请画出插入关键码113后的B 树;分析插入操作的访外次数。 (2) 分裂时采用第1个中位数为分界码,请画出插入关键码113后的B 树;分析插入操 作的访外次数。 (3) 在原树中删除关键码50;分析删除操作的访外次数(与1、2题无关,从根重新开 始操作)。 11.2 已知一组关键码为(20, 30, 50, 52, 60, 68, 70),试依次插入关键码。 (1) 生成一棵3阶的B +树,画出插入所有关键码后B 树的结构。 (2) 画出删除50后的B + 状态,分析删除操作的访外次数。 11.3 假设一个数据文件每个记录对象需要占用128 字节(其中关键码占用4字节),且所 有记录均已按关键码有序地存储在主磁盘文件中。设磁盘页块大小为2048(= 2K )字节,若主存中有12M 空间可以用来存储索引结构,索引项中每一个地址指针占8 字节。请简要回答以下问题(请写明你的计算过程)。 (1) 使用B 树索引,B 树的阶m 1最多可以为多少?4层m 1阶B 树,最多可以索引多 少字节的数据文件? (2) 使用B +树索引,B +树的阶m 2最多可以为多少? (3) 假设B +树的叶层各结点链接成双链结构,B +树的叶结点阶m 2’可以跟内部结点不 一样,则阶m 2’为多少? (4) 在第(3)小题的基础上,计算4层B +树(内部结点为m 2阶,叶结点m 2’阶),最多 可以索引多少字节的数据文件? (5) 假设尽量把B +树的头几层放入内存(本题规定不能超过12M ),那么给定关键码, 通过B +树查找到(4)小题中主数据文件的一个记录,最少几次访外?最多几次访 外? 11.4 对于下面两种B +树,列表给出他们在1、2、3、4和5层(独根是一层树)的不同情 况下,能够存储的最大记录数和最小记录数。 (1) 对于教材定义那样的B +树,其内部结点阶为50,叶结点阶为50。 (2) 如讲义P89那样的混合型B +树,其内部结点阶为55,叶结点阶为25(叶结点除关 键码,还索引部分记录信息)。 4阶B 树

力 扣 数 据 结 构 与 算 法

前端如何搞定数据结构与算法(先导篇) 「观感度:?」 「口味:锅包肉」 「烹饪时间:20min」 本文已收录在Github? 为什么要学习数据结构与算法? 在0202年的今天,由于每天被无数的信息轰炸,大多数人已经变得越来越浮躁了,并且丧失了独立思考的能力。 你可能会经常听到这样的感慨: 技术人究竟能走多远?我遇到了天花板 35岁的程序员要如何面对中年危机? 技术更新太快,好累,学不动了 然后,你也变得焦虑起来。那你有没有静下心来想过,如何才能抵御年龄增长并且使自己增值呢? 无非是终身学习,持续修炼自己的内功。内功也就是基础知识和核心概念,这些轰轰烈烈发展的技术本质,其实都是基础知识,也就是我们在大学里学过的基础课-程。 操作系统 计算机组成原理 计算机网络 编译原理

设计模式 数据结构与算法 这也就是为什么越靠谱的面试官越注重你基础知识的掌握程度,为什么越牛的的企业越重视你的算法能力。因为当你拥有了这些,你已经比大多数人优秀了。你的天花板由你自己来决定,大家口中的中年危机可能并不会成为你的危机。新技术来临时,你对它的本质会看得更加透彻,学起来会一通百通。这样的人才,公司培养你也会花费更少的成本。 (不过,一辈子做个开开心心的 CRUD Boy 也是一种选择。) 数据结构与算法之间的关系 Rob Pikes 5 Rules of Programming中的第五条是这样说的: Data dominates. If youve chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming. 数据占主导。如果您选择了正确的数据结构并组织得当,那么这些算法几乎总是不言而喻的。数据结构而非算法是编程的核心。 瑞士计算机科学家,Algol W,Modula,Oberon 和 Pascal 语言的设计师 Niklaus Emil Wirth 写过一本非常经典的书《Algorithms + Data Structures = Programs》,即算法 + 数据结构 = 程序。 我们可以得出结论,数据结构与算法之间是相辅相成的关系。数据结构服务于算法,算法作用于特定的数据结构之上。 数据结构与算法好难,怎么学?

数据结构学习总结

数据结构与算法课程学习总结 2010年 5月 17日 班级:08计本(2)班姓名:谷敏敏学号:0804012023 时光飞逝,转眼之间,经过十几周的学习,“数据结构与算法”这门课程也已经接近尾声。通过学习、实验,我们明白“数据结构与算法”这门课是我们计算机专业人才培养计划中的一门必修的核心课程,同时也是计算机科学与技术专业同学的一门重要的基础专业课,重要之处不言而喻,所以,对于这门课大家也是比较认真投入的,学的也是比较尽心。当然这还与老师独特的教学风格以及不少的实验训练是密不可分的。 对于本学科的知识内容的概括、总结可如下所示: 1.第一章中是介绍的本学科的的一些基础、相关概念,如数据、数据元素、数据类型 以及数据结构的定义。其中,数据结构包括逻辑结构、存储结构和运算集合。逻辑 结构分为四类:集合型、线性、树形和图形结构,数据元素的存储结构分为:顺序 存储、链接存储、索引存储和散列存储四类。紧接着介绍了一些常用的数据运算。 最后着重介绍算法性能分析,包括算法的时间性能分析以及算法的空间性能分析。 2.第二章具体地介绍了顺序表的概念、基本运算及其应用。基本运算有:初始化表、 求表长、排序、元素的查找、插入及删除等。而关于元素查找方法课本例举了多种 方法,有:简单顺序查找、二分查找和分块查找。排序方法有:直接插入排序、希 尔排序、冒泡排序、快速排序、直接选择排序及归并排序等。最后介绍了顺序串的 概念以及字符处理问题,其重点核心内容在于串的模式匹配。 3.第三章介绍的是链表及其应用,链表中数据元素的存储不一定是连续的,还可以占 用任意的、不连续的物理存储区域。与顺序表相比,链表的插入、删除等功能是不 需要移动元素的,只需变化指针的取向即可,算法简单快捷,。链表这一章中介绍 了链表的节点结构、静态与动态链表的概念、链表的基本运算(如求表长、插入、 查找、删除等)、单链表的建立(头插法和尾插法)以及双向循环链表的定义、结 构、功能和基本算法。 4.第四章和第五章是关于堆栈和队列的介绍与应用。堆栈与队列是两种运算受限制的 线性结构。其基本运算方法与顺序表和链表运算方法基本相同,不同的是堆栈须遵 循“先进后出”的规则,对堆栈的操作只能在栈顶进行;而队列要遵循“先进先 出”的规则,课本中列出了两种结构的相应的基本算法,如入栈、出栈、入队、出 队等。在介绍队列时,提出了循环队列的概念,以避免“假溢出”的现象。同时, 对于其应用也分别讲述了如括号匹配问题等。 5.第六章介绍了特殊矩阵和广义表的概念与应用。其中,特殊矩阵包括对称矩阵、三 角矩阵、对角矩阵和稀疏矩阵等,课本中分别详细介绍了它们的存储结构。稀疏矩 阵的应用包括转置和加法运算等。最后介绍了广义表的相关概念及存储结构,关于 关于广义表的应用有:m元多项式的表示问题。 6.第七章是关于二叉树及其应用。在介绍有关概念时,提到了二叉树的性质以及两种 特殊的二叉树:完全二叉树和满二叉树。接着介绍二叉树的顺序存储和链接存储以 及生成算法。重点介绍二叉树的遍历算法(递归算法、先序、中序和后序遍历非递 归算法)和线索二叉树。二叉树的应用:基本算法、哈弗曼树、二叉排序树和堆与 堆排序。本章为本课程重点内容,需要重点掌握。

数据结构与算法C语言版期末复习题

《数据结构与算法》期末复习题 一、选择题。 1.在数据结构中,从逻辑上可以把数据结构分为 C 。 A.动态结构和静态结构B.紧凑结构和非紧凑结构 C.线性结构和非线性结构D.内部结构和外部结构 2.数据结构在计算机内存中的表示是指 A 。 A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系 3.在数据结构中,与所使用的计算机无关的是数据的 A 结构。 A.逻辑B.存储C.逻辑和存储D.物理 4.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。 A.数据的处理方法B.数据元素的类型 C.数据元素之间的关系D.数据的存储方法 5.在决定选取何种存储结构时,一般不考虑 A 。 A.各结点的值如何B.结点个数的多少 C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便。 6.以下说法正确的是 D 。 A.数据项是数据的基本单位 B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构 7.算法分析的目的是 C ,算法分析的两个主要方面是 A 。 (1)A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进C.分析算法的易读性和文档性 (2)A.空间复杂度和时间复杂度B.正确性和简明性 C.可读性和文档性D.数据复杂性和程序复杂性 8.下面程序段的时间复杂度是O(n2) 。 s =0; for( I =0; i

数据结构与算法试题

数据结构与算法试题 一、单选题 1、在数据结构的讨论中把数据结构从逻辑上分为 (C ) A 内部结构与外部结构 B 静态结构与动态结构 C 线性结构与非线性结构 D 紧凑结构与非紧凑结构。 2、采用线性链表表示一个向量时,要求占用的存储空间地址(D ) A 必须就是连续的 B 部分地址必须就是连续的 C 一定就是不连续的 D 可连续可不连续 3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为( D )。 A n B n/2 C (n-1)/2 D (n+1)/2 4、在一个单链表中,若q结点就是p结点的前驱结点,若在q与p之间插入结点s,则执行( D )。 A s→link = p→link;p→link = s; B p→link = s; s→link = q; C p→link = s→link;s→link = p; D q→link = s;s→link = p; 5、如果想在4092个数据中只需要选择其中最小的5个,采用( C )方法最好。 A 起泡排序 B 堆排序 C 锦标赛排序 D 快速排序 6、设有两个串t与p,求p在t中首次出现的位置的运算叫做( B )。 A 求子串 B 模式匹配 C 串替换 D 串连接 7、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j从1到10。所有数组元素相继存放于一个连续的存储空间中,则存放该数

组至少需要的存储字数就是( C )。 A 80 B 100 C 240 D 270 8、将一个递归算法改为对应的非递归算法时,通常需要使用( A )。 A 栈 B 队列 C 循环队列 D 优先队列 9、一个队列的进队列顺序就是1, 2, 3, 4,则出队列顺序为( C )。 10、在循环队列中用数组A[0、、m-1] 存放队列元素,其队头与队尾指针分别为front与rear,则当前队列中的元素个数就是( D )。 A ( front - rear + 1) % m B ( rear - front + 1) % m C ( front - rear + m) % m D ( rear - front + m) % m 11、一个数组元素a[i]与( A )的表示等价。 A *(a+i) B a+i C *a+i D &a+i 12、若需要利用形参直接访问实参,则应把形参变量说明为( B )参数。 A 指针 B 引用 C 值 D 变量 13、下面程序段的时间复杂度为( C ) for (int i=0;i

北京大学数据结构与算法信科数算2007秋期末考试题

北京大学信息科学技术学院考试试卷 考试科目:数据结构与算法A 姓名: 学号: 考试时间: 2008年 1 月 9 日 教师: 张铭、赵海燕、王腾蛟、宋国杰 以下为试题和答题纸,共 4 页。 题号 一 二 三 四 五六 七 八 总分 分数 阅卷人

第 1 页 一、(共30分,每空3分)填空 1. 1.无向图G=(V , E),其中:V={a, b, c, d, e, f}, E={(a, b), (a, e), (a, c), (b, e), (c, f), (f, d), (e, d)},对该图进行深度优先遍历,得到的顶点序列正确的是____。 A .a,b,e,c,d,f B .a,c,f,e,b,d C .a,e,b,c,f,d D .a,e,d,f,c,b 2. 下图中的强连通分量的个数为________个。 3. 设有向图G 如下: 写出所有拓扑序列:___________________________________________ 添加一条弧________________________之后, 则仅有唯一的拓扑序列. 4. 请问下面哪些操作在已排序数据上实施比在无序的数据上快 ? A .找最小值 B. 计算算术平均值 C. 找中位数 D. 找出现次数最多的值 5. 序列{15,142,51,68,121,46,57,575,60,89,185 }按最低位优先法进 行基数排序,进行一次分配和收集后得到的序列 。 6. 设输入的关键码满足k 1>k 2>…>k n ,缓冲区大小为m ,用最小值堆进行置换-选择 排序方法可产生____个初始归并段。 7. 在包含n 个关键码的线性表中进行顺序检索,若检索第i 个关键码的概率为p i , 且 分布如下: n n n n p p p p 21,21,....,41,211121====?? 成功检索的平均检索长度是_______________。 8. 假设计算机系统有2048个字节的磁盘块,要存储的每一条记录中4个字节是关 键码,磁盘指针4个字节,64个字节是数据字段。记录已经排序,顺序地存储

数据结构与算法第三版第章参考答案

习题参考答案 一.选择题 1.从逻辑上可以把数据结构分为(C)两大类。 A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 2.在下面的程序段中,对x的斌值语句的频度为(C)。 for( t=1;k<=n;k++) for(j=1;j<=n; j++) x=x十1; A. O(2n) B. O (n) C. O (n2). D. O(1og2n) 3.采用顺序存储结构表示数据时,相邻的数据元素的存储地址(A)。 A.一定连续B.一定不连续 C.不一定连续 D.部分连续,部分不连续 4.下面关于算法说法正确的是(D)。 A.算法的时间复杂度一般与算法的空间复杂度成正比 B.解决某问题的算法可能有多种,但肯定采用相同的数据结构 C.算法的可行性是指算法的指令不能有二义性 D.同一个算法,实现语言的级别越高,执行效率就越低 5.在发生非法操作时,算法能够作出适当处理的特性称为(B)。 A.正确性 B.健壮性 C.可读性 D.可移植性 二、判断题 1.数据的逻辑结构是指数据的各数据项之间的逻辑关系。(√) 2.顺序存储方式的优点是存储密度大,且插人、删除运算效率高。(×) 3.数据的逻辑结构说明数据元素之间的次序关系,它依赖于数据的存储结构。(×) 4.算法的优劣与描述算法的语言无关,但与所用计算机的性能有关。(×) 5.算法必须有输出,但可以没有输人。(√) 三、筒答题 1.常见的逻辑结构有哪几种,各自的特点是什么?常用的存储结构有哪几种,各自的特点是什么? 【答】常见的四种逻辑结构: ①集合结构:数据元素之间是“属于同一个集合” ②线性结构:数据元素之间存在着一对一的关系 ③树结构:数据元素之间存在着一对多的关系 ④结构:数据元素之间存在着多对多的关系。 常见的四种存储结构有: ①顺序存储:把逻辑上相邻的元素存储在物理位置相邻的存储单元中。顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。 ②链接存储:对逻辑上相邻的元素不要求物理位置相邻的存储单元,元素间的逻辑关系通过附设的指针域来表示。 ③索引存储:通过建立索引表存储结点信息的方法,其中索引表一般存储结点关键字和一个地点信息,可通过该地址找到结点的其他信息。 ④散列存储:根据结点的关键字直接计算出该结点的存储地址的方法。 2.简述算法和程序的区别。 【解答】一个算法若用程序设计语言来描述,则它就是一个程序。算法的含义与程序十分相

算法与数据结构总结

算法与数据结构总结 算法与数据结构这一门课程,就是描述了数据的逻辑结构,数据的存储结构,以及数据的运算集合在计算机中的运用和体现。数据的逻辑结构就是数据与数据之间的逻辑结构;数据的存储结构就包含了顺序存储、链式存储、索引存储和散列存储。在这学期当中,老师给我们主要讲了顺序存储和链式存储。最后数据的运算集合就是对于一批数据,数据的运算是定义在数据的逻辑结构之上的,而运算的具体实现依赖于数据的存储结构。 通过这学期的学习,让我在去年C语言的基础上对数据与数据之间的逻辑关系有了更深的理解和认识。以前在学Matlab这一课程的时候,我们如果要实现两个数的加减乘除,或者一系列复杂的数据运算,就直接的调用函数就行,套用规则符号和运算格式,就能立马知道结果。在学习C语言这一课程时,我们逐渐开始了解函数的调用的原理,利用子函数中包含的运算规则,从而实现函数的功能。现今学习了算法,让我更深层次的知道了通过顺序表、指针、递归,能让数据算法的实现更加的简洁,明了,更易于理解。摒弃了数据的冗杂性。 在本书第二章中,主要介绍了顺序表的实现以及运用。顺序表中我认为最重要的是一个实型数组,和顺序表的表长,不论是在一个数据的倒置、插入、删除以及数据的排序过程中,都能将数据依次存入数组当中,利用数组下标之间的关系,就能实现数据的一系列操作

了。在存储栈中,给我留下最深刻的映像就是“先进后出”,由于它特殊的存储特性,所以在括号的匹配,算术表达式中被大量应用。在存储队列之中,数据的删除和存储分别在表的两端进行操作,所以存储数据很方便。为节省队列浪费闲置空间的这一大缺点,所以引入了循环队列这一概念,很好用。 在第三章中,主要讲的是链式存储特性。它最突出的优点就是可以选择连续或者不连续的存储空间都行。所以,不管是数据在插入或者删除一个数据时,会很方便,不会像顺序表那样,要移动数组中的诸多元素。所以链表利用指针能很方便的进行删除或者插入操作。而链式在栈和队列的基础上,也有了多方面的应用,所以在这些方面有了更多的应用。 第四章字符串中,基本的数组内部元素的排序和字符串的匹配大部分代码自己还是能够理解,能够看懂,如果真的要将所学的大量运用于实践的话,那就要多花些功夫和时间了。在对称矩阵的压缩,三角矩阵的压缩,稀疏矩阵在存储中能够合理的进行,能大大提高空间的开支。 在第五章递归当中,就是在函数的定义之中出现了自己本身的调用,称之为递归。而递归设计出来的程序,具有结构清晰,可读性强,便于理解等优点。但是由于递归在执行的过程中,伴随着函数自身的多次调用,因而执行效率较低。如果要在追求执行效率的情况下,往往采用非递归方式实现问题的算法程序。 在第六章数型结构当中,这是区别于线性结构的另一大类数据

常用的大数据结构与算法

常用的大数据结构与算法 在学习了解这些数据结构和算法之前,引用一位前辈的话: “我们不需要你能不参考任何资料,实现红黑树;我们需要的是你能在实践当中,选择恰当的数据结构完成程序开发;在必要的时候,能在已有的数据结构基础上进行适当改进,满足工程需要。但要做到这一点,你需要掌握基础的算法和数据结构,你需要理解并应用一些高级数据结构和算法的思想。因此,在程序员这条道路上,你要想走得更远,你需要活用各种数据结构,你需要吸收知名算法的一些思想,而不是死记硬背算法本身。” 那么,工程实践当中,最常用的算法和数据结构有哪些? 以下是Google工程师Arjun Nayini在Quora给出的答案,得到了绝大多数人的赞同。 最常用的算法 1.图搜索算法(BFS,DFS) 2.排序算法 3.通用的动态规划算法 4.匹配算法和网络流算法 5.正则表达式和字符串匹配算法 最常用的数据结构 1.图,尤其是树结构特别重要 2.Maps结构 3.Heap结构 4.Stacks/Queues结构 5.Tries树 其他一些相对比较常用的数据算法还有:贪心算法、Prim’s / Kruskal’s算法、Dijkstra’s 最短路径算法等等。 怎么样才能活用各种数据结构? 你能很清楚的知道什么时候用hash表,什么时候用堆或者红黑色?在什么应用场景下,能用红黑色来代替hash表么?要做到这些,你需要理解红黑树、堆、hash表各有什么特性,彼此优缺点等,否则你不可能知道什么时候该用什么数据结构。 常言道: 程序=算法+数据结构 程序≈数据结构 小编希望这些算法的掌握能够帮助大家拓宽握数据结构和算法的视野,提高算法设计和动手编程的能力。

数据结构实验指导书1-10

实验一、线性表基本操作 一、实验目的 1. 了解线性表的逻辑结构特性,以及这种特性在计算机内的两种存储结构。 2. 重点是线性表的基本操作在两种存储结构上的实现;其中以链表的操作为侧重点;并进一步学习结构化的程序设计方法。 二、实验内容 1. 线性表的顺序存储表示(结构)及实现。 参照教材P23页例2-1,编程实现顺序表的存储与操作。 注意几个问题: (1)关于线性表的顺序存储结构的本质是:在逻辑上相邻的两个数据元素a i-1, a i,在存储地址中也是相邻的,既地址连续。不同的教材有不同的表示,有的直接采用一维数组,这种方法有些过时。有的采用含…动态分配?一维数组的结构体,这种方法比较灵活抽象。在此本书中采用的是含…静态?一维数组和线性表长的结构体: typedef struct { DataType list[MaxSize]; /* 一维数组子域*/ int size; /*顺序表长度子域*/ }SeqList; /* 顺序存储的结构体类型*/ (2)要求编写一个完整程序,实现顺序表的存储与基本操作。在主函数中采用简单“菜单设计”(do-while循环内嵌套一个switch结构)技术(参照P75页例3-5)。其中菜单形式为:********************************************* 1、建立顺序表 2、求当前数据元素个数 3、在i位置插入元素x 4、删除第i个元素,并返回其值 5、取i位置数据元素 6、结束程序运行 ********************************************* 请输入您的选择(1,2,3,4,5,6): 2. 线性表的链表存储表示(结构)及实现。 参照教材P35页例2-3,编程实现单链表(带头结点)的存储与操作。 注意几个问题: (1)关于线性表的链表存储结构的本质是:在逻辑上相邻的两个数据元素a i-1, a i,在存储地址中可以不相邻,既地址不连续。不同的教材的表示基本是一致的。 typedef struct Node { DataType data; /* 数据子域*/ struct Node *next; /* 指针子域*/ }SLNode; /* 结点结构类型*/ (2)要求编写一个完整程序,实现顺序表的存储与基本操作。在主函数中采用简单“菜单设计”(do-while循环内嵌套一个switch结构)技术(参照P75页例3-5)。其中菜单形式为:

算法与数据结构课程设计--通讯录

******************* 实践教学 ******************* 兰州理工大学 软件学院 2012年春季学期 算法与数据结构课程设计 题目:通讯录 专业班级:软件2班 姓名:刘正翔 学号:11700215 指导教师:滕永晨 成绩:

摘要 本课程设计可加深对课堂理论学习的理解,增强动手能力,以培养学生合作的能力,为毕业设计作好实践环节上的准备。通讯录系统是在学校常见的计算机信息管理系统。它的主要任务是对学生信息进行管理,如学生信息的输入、查询、修改、增加、删除,迅速准确地完成各种学生信息的统计和查询。 本系统有分7个功能:(1)写入数据(2)读取数据(3)追加数据(4)查找数据(5)备份数据(6)删除数据(7)还原数据。其主要利用结构类型,指针,数组,函数等C语言知识来实现。

目录 摘要.................................................................................................................................................. I 一、算法分析 (1) 1.1主函数 (1) 1.2写入函数 (1) 1.3读取数据 (2) 1.4追加数据 (3) 1.5查找数据 (3) 1.6备份数据 (4) 1.7删除数据 (5) 1.8还原数据 (6) 二、主要流程图 (7) 三、程序运行测试 (8) 3.1写入数据函数测试 (8) 3.2读取数据函数测试 (8) 3.3追加数据函数测试 (9) 3.4查找数据函数测试 (10) 3.5备份数据函数测试 (10) 3.6删除数据函数测试 (10) 3.7还原数据函数测试 (11) 3.8退出程序测试: (11) 四、设计总结 (11) 参考文献 (12) 致谢 (13) 附录: (14)

数据结构与算法个人总结

数据结构与算法 重点内容:排序运算的算法、检索运算的算法,本部分所占分值较高,在11分左右; 考试点:数据顺序存储与链式存储、栈与队列的操作、二叉树的存储及遍历(或周游)、霍夫曼算法及其应用、各类排序算法; 知识部分: 1.数据结构的内容: 数据的逻辑结构:分为线性结构和非线性结构 数据的存储结构: 是数据的逻辑结构在存储器里的实现; 数据的运算:插入、删除、排序、查找等; 2.数据的存储结构分为:顺序存储结构和链式存储结构。 3.单链表与双链表的插入与删除这里不再赘述,百度一下吧! 4.栈与队列的基本运算有:插入、删除、读取头元素到变量中,原栈或队列保持不变、判 断是否为空、将栈或队列置为空 5.串的基本运算有:链接、赋值、求长度、全等比较、求子串、求子串的位置及替换等。 6.广义表:广义表是线性表的推广,也称列表。 广义表的特点: 广义表的元素可以使字表,且字表的元素还可以是字表; 广义表可以被其他广义表所共享; 广义表可以是递归的表,机本身的一个字表; 7.多维数组与稀疏矩阵的存储比较复杂,请用百度查找相关内容,不再赘述; 8.树:树并不重要,重要的知识点是二叉树,对树理解不透彻的同学,请用百度搜索。 9.二叉树: 二叉树的重点内容包括: 二叉树的遍历:中序遍历、前序遍历、后续遍历;(重点考察) 完全二叉树(定义):在一棵二叉树中,若最多只有最下面两层的节点数可小于2,且最下面一层的节点集中于最左边的位置,则称此二叉树为完全二叉树; 树的先根次序周游对应于二叉树的前序周游(遍历),树的后根次序周游对应于二叉树的中序周游(遍历) 10.二叉树的存储结构:链式存储结构与顺序存储结构。 二叉树的链式存储: 是指二叉树的各节点随机存储在内存空间中,节点之间的关系用指针标示; 二叉树链表的节点包括三个:左指针,数据域,右指针;其中左指针指向左子节点,有指针指向右子节点;也可以是指一个父指针(parent)用于指向父节点; 二叉树链表的重要知识点:一个n节点的二叉树链表,有n+1个空指针域; 二叉树的顺序存储: 二叉树的顺序存储就是按一定的次序,用一组地址连续的存储单元存储二叉树的节点元素; 完全二叉树的顺序存储的性质: 用数组A[1….n]顺序存储完全二叉树的各节点,则当i>0,且i<=[(n-1)/2]时,节点A[I]的右子女是节点A[2i+1],否则节点A[I]没有右子女;同理当i>0且I<=[n/2],节点i的左子女节点是2i,否则没有! 11.哈夫曼树:

相关文档
最新文档