数据结构_11
- 格式:ppt
- 大小:1.52 MB
- 文档页数:112
第11章数据结构的传输和XDR标准在复杂的网络应用中,在客户进程和服务器进程间可能需要传递一些复杂的数据结构,这些数据结构可能用于控制进程的动作或者返回进程处理的结果。
本章首先说明在网络中传送数据结构中,存在的问题。
比如各种数据类型的不同处理、指针的传递等等。
接着我们示例一个使用我们自己定义的简单规则进行数据结构传送的程序片断。
然后我们将说明在数据结构传送中实际上被使用的标准XDR(extern data representation),外部数据表示。
我们介绍了XDR转换库函数的使用。
11.1 数据结构的传送我们在UDP数据报一章曾经演示了一个视频点播的模拟,在模拟中,我们使用了非常简单的控制命令,而实际的系统中,可能需要传递更多的信息。
比如在客户进程和服务器进程连接TCP连接后,用户必须输入自身的用户标识和用户密码等等身份确认信息,然后通过TCP 连接将这些信息发送给服务器端,在服务器进程根据这些信息对用户的身份进行确认后,才能允许用户进入系统,使用系统中的各种资源。
因而,对于较复杂的网络应用,我们常常需要复杂的数据结构,而不是简单的几个字节。
11.1.1 数据结构传送的问题下面,我们将说明在数据结构传递中可能存在的问题。
1.网络字序的问题不同类型的计算机对于数据的存储格式可能不同,这将导致它们对相同整数(或其他类型数)的2进制序列理解不同,这个问题在以前我们已经详细说明了。
2.浮点数的传递图11.1 将浮点数的小数部分和整数部分分别传递浮点数的传递比整数更加困难,通常浮点数使用若干比特表示整数部分,其他比特表示小数部分。
不同类型的浮点数float和double,它们使用的比特数不相同,这使得在网络中传递它们有一定的困难。
对于浮点数的处理,可以将浮点数用字符串的形式进行传递,在接收端再将浮点数字符串转化成浮点数。
或者我们可以将浮点数的小数点前后的两个部分分别看成两个整数,分别进行传递。
图11.2 将浮点数作为字符串传递3.指针的处理在数据结构传递中,最为困难的是指针,因为指针的含义是本机上存放某个数据的地址,这个地址在远端的主机没有任何的意义。
题目:在一个图G中,所有顶点的度数之和等于所有边数之和的()倍。
选项A:2
选项B:4
选项C:1/2
选项D:1
答案:2
题目:邻接表是图的一种()。
选项A:链式存储结构
选项B:索引存储结构
选项C:顺序存储结构
选项D:散列存储结构
答案:链式存储结构
题目:如果从无向图的任一顶点出发进行一次深度优先搜索即可访问所有顶点,则该图一定是()。
选项A:完全图
选项B:有回路
选项C:连通图
选项D:一棵树
答案:连通图
题目:下列有关图遍历的说法不正确的是()。
选项A:非连通图不能用深度优先搜索法
选项B:连通图的深度优先搜索是一个递归过程
选项C:图的遍历要求每一顶点仅被访问一次
选项D:图的广度优先搜索中邻接点的寻找具有“先进先出”的特征
答案:非连通图不能用深度优先搜索法
题目:无向图的邻接矩阵是一个()。
选项A:零矩阵
选项B:上三角矩阵
选项C:对角矩阵
选项D:对称矩阵
答案:对称矩阵
题目:图的深度优先遍历算法类似于二叉树的()遍历。
选项A:中序
选项B:后序
选项C:层次
选项D:先序
答案:先序
题目:已知下图所示的一个图,若从顶点V1出发,按深度优先搜索法进行遍历,则可能得到的一种顶点序列为()。
)。
)。
)条边。
选项A:n(n+1)/2
选项B:n(n-1)/2
选项C:n(n-1)
选项D:n(n+1)
答案:n(n-1)/2。
济南大学 - 计11 - 数据结构课程设计题目济南大学信息科学与工程学院数据结构课程设计Practicum for Data Structure课程设计题目带结点记录的线性链表操作的实现设计小组成员设计目的:掌握线性链表的建立;掌握线性链表的结点定义;掌握线性链表的基本操作。
设计内容:利用线性链表实现学生成绩管理系统,具体功能:输入、输出、插入、删除、查找、追加、显示、保存、退出,并能在屏幕上输出操作前后的结果。
设计要求: 1. 结点定义包括:书名,作者,出版社,ISBN(13位,主关键码) 2. 查询包括:按书名查询、按作者查询、按书号查询。
作者相同是列出全部记录,作者和书名能实现模糊查询(含有某些子串的)。
3. 书写设计报告,叙述主要算法。
参考文献: 1. 严蔚敏, 陈文博. 数据结构及应用算法教程, 清华大学出版社, 2021 2. 严蔚敏. 数据结构(C语言版), 清华大学出版社, 2021 3. 朱振元. 数据结构――C++语言描述, 清华大学出版社, 2021 4. 潘玉奇, 刘明军. 程序设计基础(C语言)实验指导, 清华大学出版社, 2021 济南大学信息科学与工程学院数据结构课程设计Practicum for Data Structure课程设计题目带结点记录的集合操作的实现设计小组成员设计目的:掌握用线性链表表示的集合的建立;掌握线性链表的结点定义;掌握集合的基本操作。
设计内容:利用线性链表实现集合操作,具体功能:集合的输入、显示、元素排序、交、差、并、对称差、程序退出,并能在屏幕上输出操作前后的结果。
设计要求: 1. 结点定义包括:英语词汇(主关键码),词性,汉语 2. 基本操作:输入两个集合,按英语词条对两个集合进行排序、交集、差集、并集、对称差集的求解。
3. 书写设计报告,叙述主要算法。
参考文献: 1. 严蔚敏, 陈文博. 数据结构及应用算法教程, 清华大学出版社, 2021 2. 严蔚敏. 数据结构(C语言版), 清华大学出版社, 2021 3. 朱振元. 数据结构――C++语言描述, 清华大学出版社, 2021 4. 杨波, 刘明军. 程序设计基础(C语言), 清华大学出版社, 2021 5. 潘玉奇, 刘明军. 程序设计基础(C语言)实验指导, 清华大学出版社, 2021 济南大学信息科学与工程学院数据结构课程设计Practicum for Data Structure课程设计题目表达式求值(计算器)设计小组成员设计目的:熟悉栈类型的数据结构和运算符重载。
一个完整硬盘的数据应该包括五部分:MBR,DBR,FA T,DIR区和DA TA区。
其中只有主引导扇区是唯一的,其它的随你的分区数的增加而增加硬盘分区后逻辑结构图中用淡红色标明的扇区(尤以主引导扇区和第一分区引导扇区为最)是易受病毒攻击的扇区(一)主引导扇区(0扇区)主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。
主引导程序代码又称第一关键代码,它的作用是找出系统当前的活动分区,负责把对应的一个操作系统的引导记录即当前活动分区的引导记录载入内存。
此后,主引导记录就把控制权转给该分区的引导记录。
如果主引导记录被病毒覆盖、清零,或者被某些分区软件改写,则可以用相应DOS版本的FDISK/mbr命令加以更正。
0扇区示意图主引导扇区即主引导记录MBR(Master Boot Record),是硬盘的第一个物理扇区(0柱面,0磁头,1扇区),也就是硬盘的"0"扇区。
在它的512个字节中,包括三部分:主引导程序代码,占446字节(第一关键代码)硬盘分区表HDPT,占用64字节(第二关键代码)主引导扇区结束标志AA55H(第三关键代码)硬盘的总分区数为什么不能大于4的原因(需要建立扩展分区)。
在主分区最多只能分四个主分区不管硬盘有多大,最多也只能有四个主分区(扩展分区也是一个主分区)。
通常在WIN98下使用FDISK分区工具分区时,只分了一个活动分区和一个扩展分区。
16字节表示的意义磁头(0-254)、柱面(0-1023 )、扇区(1-63) 由来每一分区的第1至第3字节是该分区起始地址。
其中第1字节为起始磁头号(面号);第2字节的低6位为起始扇区号,高2位则为起始柱面号的高2位;第3字节为起始柱面号的低8位。
因此,分区的起始柱面号是用10位二进制数表示的,最大值为210 = 1024,因逻辑柱面号从0开始计,故柱面号的显示最大值为1023。
《数据结构》填空作业题答案第1章绪论(已校对无误)1.数据结构包括数据的逻辑结构、数据的存储结构和数据的运算三方面的内容。
2.程序包括两个内容:数据结构和算法。
3. 数据结构的形式定义为:数据结构是一个二元组: Data Structure =(D,S)。
4. 数据的逻辑结构在计算机存储器内的表示,称为数据的存储结构。
5. 数据的逻辑结构可以分类为线性结构和非线性结构两大类。
6. 在图状结构中,每个结点的前驱结点数和后继结点数可以有多个。
7. 在树形结构中,数据元素之间存在一对多的关系。
8. 数据的物理结构,指数据元素在计算机中的标识(映象),也即存储结构。
9. 数据的逻辑结构包括线性结构、树形结构和图形结构 3种类型,树型结构和有向图结构合称为非线性结构。
10. 顺序存储结构是把逻辑上相邻的结点存储在物理上连续的存储单元里,结点之间的逻辑关系由存储单元位置的邻接关系来体现。
11. 链式存储结构是把逻辑上相邻的结点存储在物理上任意的存储单元里,节点之间的逻辑关系由附加的指针域来体现。
12. 数据的存储结构可用4种基本的存储方法表示,它们分别是顺序存储、链式存储、索引存储和散列存储。
13. 线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是一对多或多对多。
14. 数据结构在物理上可分为顺序存储结构和链式存储结构。
15. 我们把每种数据结构均视为抽象类型,它不但定义了数据的表示方式,还给出了处理数据的实现方法。
16. 数据元素可由若干个数据项组成。
17. 算法分析的两个主要方面是时间复杂度和空间复杂度。
18. 一个算法的时间复杂度是用该算法所消耗的时间的多少来度量的,一个算法的空间复杂度是用该算法在运行过程中所占用的存储空间的大小来度量的。
19. 算法具有如下特点:有穷性、确定性、可行性、输入、输出。
20. 对于某一类特定的问题,算法给出了解决问题的一系列操作,每一操作都有它的确切的定义,并在有穷时间内计算出结果。
第11章 外部排序一、选择题1.下列排序算法中,其中()是稳定的。
A.堆排序,起泡排序B.快速排序,堆排序C.直接选择排序,归并排序D.归并排序,起泡排序【答案】D2.若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。
A.快速排序B.堆排序C.归并排序D.直接插入排序【答案】C【解析】稳定排序有:插入排序、起泡排序、归并排序、基数排序。
不稳定排序有:快速排序、堆排序、shell排序。
时间复杂度平均为O(nlog2n)的有:归并排序、堆排序、shell排序、快速排序。
3.在下面的排序方法中,辅助空间为O(n)的是()。
A.希尔排序B.堆排序C.选择排序D.归并排序【答案】D4.下列排序算法中,占用辅助空间最多的是()。
A.归并排序B.快速排序C.希尔排序D.堆排序【解析】归并排序的辅助空间为O(n),快速排序所占用的辅助空间为O(logn),堆排序所占用的辅助空间为O(1)。
5.将两个各有N个元素的有序表归并成一个有序表,其最少的比较次数是()。
A.N B.2N-1 C.2N D.N-1【答案】A【解析】归并排序基本思想:归并排序是多次将两个或两个以上的有序表合并成一个新的有序表。
最简单的归并是直接将两个有序的子表合并成一个有序的表。
归并排序最好情况下的复杂度为O(n)。
6.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为()排序法。
A.插入B.选择C.希尔D.二路归并【答案】A【解析】解此题需要熟知各种排序方法的基本思想。
插入排序的基本思想是:假设待排序的记录存放在数组R[0..n-1]中,排序过程的某一中间时刻,R被划分成两个子区间R[0..i-1]和R[i..n-1],其中:前一个子区间是已排好序的有序区,后一个子区间则是当前未排序的部分,不妨称其为无序区。
将当前无序区的第1个记录R[i]插入到有序区R[0..i-1]中适当的位置上。
数据结构导论自考题模拟11(总分:100.00,做题时间:90分钟)一、单项选择题(总题数:15,分数:30.00)1.逻辑关系是指数据元素的______(分数:2.00)A.存储方式B.数据项C.结构D.关联方式√解析:[考点] 逻辑关系[解析] 所谓逻辑关系是指数据元素之间的关联方式或者“邻接关系”。
2.算法能正确地实现预定功能的特性称为______(分数:2.00)A.正确性√B.易读性C.健壮性D.时空性解析:[考点] 算法的评价因素[解析] 算法的正确性是指能正确地实现预定功能,满足具体问题的需要。
3.for(i=0;i<n;i++)for(j=0;j<n;j++)A[i][j]=i*j;上面算法的时间复杂度为______∙ A.O(1)∙ B.O(n2)∙ C.O(log2n)∙ D.O(n)(分数:2.00)A.B. √C.D.解析:[考点] 时间复杂度的计算[解析] 第一个for语句执行n+1次,第二个for语句执行n*(n+1)次,第三行赋值语句执行n*n次,可得整个程序段的时间函数为T=(n+1)+n*(n+1)+n*n=2n 2 +2n+1,因此算法的时间复杂度为O(n 2 )。
4.带头结点的单链表head为空的判断条件为______(分数:2.00)A.head=NULLB.head!=NULLC.head->next=NULL √D.head->next=head解析:[考点] 单链表[解析] 带头结点的单链表head为空的判断条件为head->next=NULL。
5.设顺序表有10个元素,则在第4个元素前插入一个元素所需移动元素的个数为______(分数:2.00)A.6B.7 √C.8D.9解析:[考点] 顺序表的插入算法[解析] 插入法的基本步骤是:①将结点各向后移一位,以便空出第i个位置;②将x置入该空位;③表长加一,完成顺序表的插入。
6.已知一个单链表中,指针q指向指针p的前驱结点,若在指针q所指结点和指针p所指结点之间插入指针s所指结点,则需执行______(分数:2.00)A.q->next=s;p->next=s;B.q->next=s;s->next=q;C.q->next=s;q->next=p;D.q->next=s;s->next=p; √解析:[考点] 单链表的插入算法[解析] 单链表的插入步骤是:找到插入位置的前一个结点q和后一个结点p,生成一个结点s,然后执行q->next=s;s->next=p完成单链表的插入。