西工大16秋《数据结构》在线作业

西工大16秋《数据结构》在线作业
西工大16秋《数据结构》在线作业

奥鹏17春西工大16秋《数据结构》在线作业

一、单选题(共40 道试题,共80 分。)

1. 已知广义表ls=(a,(b,c,d),e),运用head和tail函数取出ls中原子b的运算是()。

A. head(head(ls))

B. tail(head(ls))

C. head(head(tail(ls)))

D. head(tail(ls))

正确答案:

2. 在双向循环链表中,在p指针所指向的结点前插入一个指针q所指向的新结点其修改指针的操作是()。(双向链表的结点结构是llink,data,rlink)

A. p->llink=q;q->rlink=p;p->llink->rlink=q;q->llink=q;

B. p->llink=q; p->llink->rlink=q; q ->rlink=p;q->llink= p->llink;

C. p->llink=q; q->llink= p->llink; p->llink->rlink=q;p->llink=q;

D. q->llink= p->llink;q->rlink=p; p->llink =q;p->llink=q;

正确答案:

3. 树形结构最适合用来描述()。

A. 有序的数据元素

B. 无序的数据元素

C. 数据元素之间的具有层次关系的数据

D. 数据元素之间没有关系的数据

正确答案:

4. 下列程序段的时间复杂度是()。for(i=0;i<="" a[i][j]="0;" for(j="1;j

A. O(n)

B. O(m+n+1)

C. O(m+n)

D. O(m*n)

正确答案:

5. 如果T2是由有序树T转换而来的二叉树,那么T中结点的后序就是T2结点的()。

A. 先序

B. 中序

C. 后序

D. 层序

正确答案:

6. 折半查找法的时间复杂度是()。

A. O(n*n)

B. O(n)

C. O(nlogn)

D. O(logn)

正确答案:

7. 有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主序,A11为第一个元素,其存储地址为1,每个元素占1个地址空间,则A85的地址为()。

A. 13

B. 33

C. 18

D. 40

正确答案:

8. 表达式INDEX(‘DA TASTRUCTURE’,’STR’)的运算结果是()。

A. 5

B. 4

C. 6

D. 3

正确答案:

9. 若结点的存储地址与其关键字之间存在某种映射关系,则称这种存储结构为()。

A. 顺序存储结构

B. 链式存储结构

C. 索引存储结构

D. 散列存储结构

正确答案:

10. 算法指的是()。

A. 计算机程序

B. 解决问题的计算方法

C. 排序算法

D. 解决问题的有限运算序列

正确答案:

11. 数据表A中有10000个元素,如果仅要求求出其中最大的10个元素,则采用()排序算法最节省时间。

A. 堆排序

B. 希尔排序

C. 快速排序

D. 直接选择排序

正确答案:

12. 已知广义表a=((a,b,c),(d,e,f)),从a中取出原子e的运算是()。

A. tail(head(a))

B. head(tail(a))

C. head(tail(tail(head(a))))

D. head(tail(tail(a)))

正确答案:

13. 广义表运算式tail[((a,b),(c,d))]的结果为()。

A. c,d

B. (c,d)

C. ((c,d))

D. d,c

正确答案:

14. 希尔排序的增量序列必须是()。

A. 递增的

B. 随机的

C. 递减的

D. 非递减的

正确答案:

15. 设有两个串p和q,其中q是p的字串,求q在p中首次出现的位置的算法称为()。

A. 求子串

B. 联接

C. 匹配

D. 求串长

正确答案:

16. 若串S=’syntax’,其字串的数目是()。

A. 6

B. 21

C. 22

D. 7

正确答案:

17. 深度为5的二叉树至多有结点数为()。

A. 16

B. 30

C. 31

D. 32

正确答案:

18. n个顶点的强连通图至少有()条边。

A. n-1

B. n

C. 2n

D. n(n-1)

正确答案:

19. 具有65个结点的完全二叉树的高度为()。(根的层次号为0)

A. 8

B. 7

C. 6

D. 5

正确答案:

20. 在数据结构中,数据的逻辑结构可以分为()。

A. 内部结构和外部结构

B. 线性结构和非线性结构

C. 紧凑结构和非紧凑结构

D. 动态结构和静态结构

正确答案:

21. 在n个顶点的有向完全图中,边的总数为()条。

A. n(n-1)/2

B. n(n-1)

C. n(n-2)

D. 2n

正确答案:

22. 适于对动态查找表进行高效率查找的组织结构是()。

A. 有序表

B. 分块有序表

C. 三叉排序树

D. 线性链表

正确答案:

23. 对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,则所有顶点邻接表中的结点总数为()。

A. 2*n

B. 2*e

C. n

D. e

正确答案:

24. 线索二叉树是一种()结构。

A. 逻辑

B. 逻辑和存储

C. 物理

D. 线性

正确答案:

25. 计算机识别、存储和加工处理的对象被统称为()。

A. 数据

B. 数据元素

C. 数据结构

D. 数据类型

正确答案:

26. 若待排序列已基本有序,要使它们完全有序,从关键码比较次数和移动次数考虑,应当使用的排序方法是()。

A. 归并排序

B. 直接插入排序

C. 直接选择排序

D. 快速排序

正确答案:

27. 在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A 的左孩子的平衡因子为-1,右孩子的平衡因子为0,则应作()型调整以使其平衡。

A. LL

B. LR

C. RL

D. RR

正确答案:

28. 一个广义表为(a,(a,b),d,e,((i,j),k)),则该广义表的长度和深度分别为()。

A. 5和3

B. 5和4

C. 4和3

D. 4和4

正确答案:

29. 设无向图G中顶点数为n,图G最多()有条边。

A. n

B. n-1

C. n*(n-1)/2

D. n*(n-1)

正确答案:

30. 一个n*n的对称矩阵,如果以行或列为主序存入内存,则其容量为()。

A. n*n

B. n*(n+1)/2

C. (n+1)*(n+1)/2

D. (n-1)*n/2

正确答案:

31. 为了方便的在线性结构的数据中插入一个数据元素,则其数据结构宜采用()。

A. 顺序存储

B. 链式存储

C. 索引存储

D. 散列存储

正确答案:

32. 二维数组a的每个元素是由6个字符组成的串,行下标i的范围从0~8,列下标j的范围从1~10。若a按行存放,元素a[8,5]的起始地址与当a按列存放时的元素()的起始地址一致(每个字符占一个字节)。

A. a[8,5]

B. a[3,10]

C. a[5,8]

D. a[0,9]

正确答案:

33. 对表长为n的顺序表进行顺序查找,在查找概率相等的情况下,查找成功的平均查找长度为()。

A. (n-1)/2

B. n/2

C. (n+1)/2

D. n

正确答案:

34. 如果某图的邻接矩阵时对角线元素均为零的上三角矩阵,则此图是()。

A. 有向完全图

B. 连通图

C. 强连通图

D. 有向无环图

正确答案:

35. 对于哈希函数H(key)=key%13,被称为同义词的关键字是()。

A. 35和41

B. 23和39

C. 15和44

D. 25和51

正确答案:

36. 下述排序算法中,稳定的是()。

A. 直接选择排序

B. 表插入排序

C. 快速排序

D. 堆排序

正确答案:

37. 对于单链表形式的队列,队空的条件是()。

A. F=R=null

B. F=R

C. F≠null且R=null

D. R-F=1

正确答案:

38. 设有5000个元素,希望用最快速度挑选出其中前10个最大的元素,在以下的排序方法中,采用那一种最好()。

A. 快速排序

B. 堆排序

C. 归并排序

D. 基数排序和shell排序

正确答案:

39. 向顺序栈中压入新元素时,习惯上应当()。

A. 先移动栈顶指针,再存入元素

B. 先存入元素,再移动栈顶指针

C. 先后次序无关紧要

D. 同时进行

正确答案:

40. 数组b[1..10,-2..6,2..8]以行优先的顺序存储,设第一个元素的首址是100,每个元素的长度为3。元素b[5,0,7]的存储首址为()。

A. 900

B. 912

C. 910

D. 913

正确答案:

西工大16秋《数据结构》在线作业

二、判断题(共10 道试题,共20 分。)

1. 在链表中存储线性表中的第一个数据元素的结点是首元结点。()

A. 错误

B. 正确

正确答案:

2. 根据线性表的链式存储结构,每个结点所含指针的个数,链表分为循环链表和普通链表。()

A. 错误

B. 正确

正确答案:

3. 若一个栈的输出序列是1,2,3,...,n,输出序列的第一个元素是n,则第i个输出元素是n-i+1。()

A. 错误

B. 正确

正确答案:

4. POP(PUSH(S,A))的运算步骤是首先将元素A压入栈中,若栈S满,出现上溢现象,否则将元素A压入栈顶,且元素个数加1,然后做POP(S)运算,将栈顶元素弹出,且元素个数减一。()

A. 错误

B. 正确

正确答案:

5. 图的生成树是不唯一的,一个连通图的生成树是一个最小连通子图,n个顶点的生成树有n-1条边,最小代价生成树是唯一的。()

A. 错误

B. 正确

正确答案:

6. 算法的计算量的大小称为计算的复杂性。()

A. 错误

B. 正确

正确答案:

7. 模式串P=’abaabcac’的next函数值序列为01122313。()

A. 错误

B. 正确

正确答案:

8. 线性表中元素数量基本稳定,且很少进行插入和删除,要求以最快的速度存取线性表中的元素,此线性表宜采用链式存储结构。()

A. 错误

B. 正确

正确答案:

9. 被计算机加工的数据元素不是孤立无关的,它们彼此之间一般存在着某种联系通常将数据元素间的这种联系关系称为结构。()

A. 错误

B. 正确

正确答案:

10. 在顺序表中插入或删除一个元素,需要平均移动n/2个元素,具体移动的元素个数与插入或删除元素的位置有关。()

A. 错误

B. 正确

正确答案:

数据结构作业系统第七章答案

7.22③试基于图的深度优先搜索策略写一算法,判别以邻接表方式存储的有向图中是否存在由顶点vi到顶点vj的路径(i≠j)。注意:算法中涉及的图的基本操作必须在此存储结构上实现。 实现下列函数: Status DfsReachable(ALGraph g, int i, int j); /* Judge if it exists a path from vertex 'i' to */ /* vertex 'j' in digraph 'g'. */ /* Array 'visited[]' has been initialed to 'false'.*/ 图的邻接表以及相关类型和辅助变量定义如下:Status visited[MAX_VERTEX_NUM]; typedef char VertexType; typedef struct ArcNode { int adjvex; struct ArcNode *nextarc; } ArcNode; typedef struct VNode { V ertexType data; ArcNode *firstarc; } VNode, AdjList[MAX_VERTEX_NUM]; typedef struct { AdjList vertices; int vexnum, arcnum; } ALGraph; Status DfsReachable(ALGraph g, int i, int j) /* Judge if it exists a path from vertex 'i' to */ /* vertex 'j' in digraph 'g'. */ /* Array 'visited[]' has been initialed to 'false'.*/ { int k; ArcNode *p; visited[i]=1; for(p=g.vertices[i].firstarc;p;p=p->nextarc) { if(p) { k=p->adjvex; if(k==j)return 1; if(visited[k]!=1)

数据结构大作业含源代码

数据结构大作业 作业题目:职工信息管理系统 姓名: 学号: 班级: 指导教师: 日期:

一、主要功能: 这个职工信息管理系统是由C语言编写的程序,它用起来很方便又很灵活。它由输入职工信息,输出职工信息,按职工号,部门号,工资排序,按职工号,部门号,工资来输出职工的所有信息。删除有关职工的所有信息,保存职工的所有信息并退出等11个模块儿组成。 二、实验环境:C语言、C++、C# 等等。 三、功能说明: 下面按步骤来介绍一下,职工信息管理系统的基本操作。 这是运行程序以后出现的主界面。如图(1)所示: 图(1)主界面 1.输入职工的信息 该模块儿的功能是分别输入职工的姓名,职工号,部门号,工资等信息。每次输入职工的所有信息以后,界面上会显示出《输入完成!》的命令。如图(2)所示:

图(2)输入职工信息 2.输出所有的职工信息 该模块儿的功能是显示出有关职工的所有信息。操作如图(3)所示: 图(3)输出所有的职工信息 3.按职工号排序 该模块儿的功能是按职工号排序所有的职工。我们按3的时候,界面上会显示出《排序完成!》的命令。如图(4)所示:

图(4)按职工号排序 4.输出所有的职工号码 该模块儿的功能是显示出已排序好的所有职工的号码。操作如图(5)所示: 图(5)输出所有的职工号 5.按部门号排序 该模块儿的功能是按部门号排序所有职工的部门号。我们按5的时候,界面上会显示出《排序完成!》的命令。如图(6)所示:

图(6)按部门号排序 6.输出所有的部门号 该模块儿的功能是显示出已排序好的所有部门号。操作如图(7)所示: 图(7)输出所有的部门号 7.按职工的工资排序 该模块儿的功能是按工资排序所有职工的工资。我们按7的时候,界面上会显示出《排序完成!》的命令。如图(8)所示:

计算机网络实验1

实验一网络常用命令的使用及DNS层次查询、SMTP协议分析 网络常用命令的使用 1、windows命令 不同的操作系统要用不同的命令进入命令行界面。 在Win9x/Me的开始菜单中的运行程序中键入"command"命令,可进入命令行界面。在Win2000/NT的开始菜单中的运行程序中键入"cmd"命令,可进入命令行界面。 开始——〉运行——〉键入cmd命令或command命令——〉回车 进入了命令行操作界面(DOS窗口),在DOS窗口中只能用键盘来操作。如下所示: 2、网络常用命令的作用与格式 了解和掌握网络常用命令将会有助于更快地检测到网络故障所在,从而节省时间,提高效率。网络命令数量比较多,在本次实验中我们学习的网络命令是为数不多的一些常用网络命令。 由于每个网络命令都有不同的作用,为了更好地掌握这些网络常用命令应该了解这些命令的基本格式,基本格式如下:

网络命令参数1参数2参数3参数… 查看这些参数的方法是在网络命令后加“/?”,如要查看ping命令的参数可以输入ping/?显示如下: 【实验目的】 1、掌握网络常用命令的使用; 2、利用网络常用命令对网络中常见现象进行分析判断。 【实验容】 1、掌握PING命令的基本使用方法(包括参数的使用),对网络常见故障利用命令进行分析判断: Ping是测试网络联接状况以及信息包发送和接收状况非常有用的工具,是网络测试最常用的命令。Ping 向目标主机(地址)发送一个回送请求数据包,要求目标主机收到请求后给予答复,从而判断网络的响应时间和本机是否与目标主机(地址)联通。 如果执行Ping不成功,则可以预测故障出现在以下几个方面:网线故障,网络适配器配置不正确,IP 地址不正确。如果执行Ping成功而网络仍无法使用,那么问题很可能出在网络系统的软件配置方面,Ping 成功只能保证本机与目标主机间存在一条连通的物理路径。 命令格式: ping IP地址或主机名[-t] [-a] [-n count] [-l size] 常用参数含义: -t不停地向目标主机发送数据; -a 以IP地址格式来显示目标主机的网络地址;

数据结构作业

作业1.线性表 (1) 在有序单链表中设计一高效算法删除所有值大于mink 且小于maxk 的元 素;思考题:你能将上述算法改为双向循环链表吗? (2) 将带表头结点的单链表就地逆置 (3) 将顺序表逆置,要求用最少的附加空间 (4) 在有序顺序表中插入x ,插入后仍为有序的。 作业2. 栈、队列、数组 1.若进栈序列为abcd ,请给出全部可能的出栈序列和不可能的出栈序列。 2.循环队列如何判断队满和队空? 3.写出下面稀疏矩阵的三元组顺序表和十字链表表示。 4.设A 为n 阶对称阵,采用压缩存储存放于一维数组F[n(n+1)/2]中(从F[0] 开始存放),请分别给出存放上三角阵时任一矩阵元素aij (1≤i,j ≤n )的地址 计算公式和存放下三角阵时任一矩阵元素aij (1≤i,j ≤n )的地址计算公式。 作业3.树与二叉树 一、问答题 1、请分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。 2、已知二叉树的先序遍历序列是EABDCFHGIKJ ,中序遍历序列是 ABCDEFGHIJK ,请构造二叉树,并写出其层次遍历序列和后序遍历序列。 3、将图1所示的森林转换成一棵二叉树。 A B C D G H I J K E F L 图1 4、将如图2所示的二叉树还原成树或森林 400000503008000000000700200000A ?????? ??=????????

A B C D G H I J K E F L L L 图2 5、假设用于通信的电文由7个字母组成,字母在电文中出现的频率分别为 0.17、0.09、0.12、0.06、0.32、0.03、0.21。试为这7个字母设计哈夫曼编码,并计算其带权路径长度。 二、二叉树采用二叉链表存储,试设计算法实现: (1)设计递归算法实现二叉树中所有结点的左右孩子交换。 (2)统计以值为X 的结点为根的子树中叶子结点的数目。 (3)设计算法求二叉树的高 作业4 图 一、简答题: 1. 已知带权无向图如图所示: (1). 根据普里姆(Prim )算法,求它的从顶点a 出发的最小生成树(写出过程,即添加顶点、边次序); (2). 根据克鲁斯卡尔(Kruskal )算法,求该图的最小生成树(写出过程,即添加边次序)。 2.已知带权有向图如图所示: (1). 画出该图的邻接矩阵存储结构; (2). 请写出该图的一个拓扑有序序列; (3). 求从顶点a 到其余各顶点之间的最短路经及最短路经长度,并给出计算过程。 二、编程题: 用类C 语言设计算法判断有向图中是否存在由顶点v s 到v t 的路径(t s ),要求说明有向图的存储方式。 作业5 查找与排序 一、简答题: 1. 设有关键字序列{25,40,33,47,12,66,72,87,94,22,5,58},散列 表长12,散列函数为h(key)=key%11,用线性探查再散列、链地址法处理冲突,请分别画出散列表,并计算在等概率情况下的查找成功的平均查找长度。

数据结构大作业报告

数据结构大作业报告 数据结构大作业实验报告课程名称:数据结构设计题目:客户去银行储蓄模拟程序一( 实验题目 (1)内容描述:编写一个程序反映客户到银行储蓄的过程。 (2)基本要求:要实现以下功能:1:排队 2:储蓄 3:查看排队4.:删除自己所排的队 5.不再排队,剩下的客户依次储蓄 6:下班 二( 实验的工程组成图和程序结构图 main bank 本工程的组成结构如左图所示,程序结构图如右图所示。三( 工程所包含的函数的功能描述 Bank():模拟客户到银行去储蓄的过程。客户排队储蓄,所以要用到一个队列, 这里设计了一个不带头结点的单链表作为队列。 四( 实验工程的算法描述及流程图 //客户排队去银行储蓄,用到了队列的知识,这里设计了一个不带头结点的单链表作为队列来完成排队储蓄过程 #include

#include typedef struct qnode { int data; struct qnode *next; } QNode; //定义链队结点类型 typedef struct { QNode *front,*rear; } QType; //定义链队类型 void bank() //模拟客户储蓄的过程 { int cho,onwork=1,no,find; QType *q; //定义链队类型的指针 QNode *p,*r; //定义链队结点的指针 q=(QType *)malloc(sizeof(QType)); //申请链队的空间 q->front=q->rear=NULL; //创建空队 while (onwork==1) //循环执行 { printf("1:排队 2:储蓄 3:查看排队4:删除自己所排的队 5:不再排队,剩下的客户依次储蓄 6:下班请选择:"); scanf("%d",&cho); switch(cho) { case 1://排队

计算机网络实验报告

计算机网络实验报告 专业计算机科学与技术 班级15秋 学号1532001256679 姓名王小祥 组号一组 指导教师印志勇 国家开放大学东台分校 二○一七年十二月

目录 实验总体说明 (3) 实验一以太网帧的构成 (3) 实验三路由信息协议RIP (8) 实验四传输控制协议TCP (10) 实验五邮件协议SMTP、POP3、IMAP (12) 实验六超文本传输协议HTTP (14)

实验总体说明 1.实验总体目标 配合计算机网络课程的教学,加强学生对计算机网络知识(TCP/IP协议)的深刻理解,培养学生的实际操作能力。 2.实验环境 计算机网络协议仿真实验室: 实验环境:网络协议仿真教学系统(通用版)一套 硬件设备:服务器,中心控制设备,组控设备,PC机若干台 操作系统:Windows 2003服务器版 3.实验总体要求 ●按照各项实验内容做实验,记录各种数据包信息,包括操作、观察、记录、分析, 通过操作和观察获得直观印象,从获得的数据中分析网络协议的工作原理; ●每项实验均提交实验报告,实验报告的内容可参照实验的具体要求,但总体上应包 括以下内容:实验准备情况,实验记录,实验结果分析,算法描述,程序段,实验过程中遇到的问题以及对思考问题的解答等,实验目的、实验原理、实验步骤不需要写入实验报告中。 实验一以太网帧的构成 实验时间:____________ 成绩:________________ 实验角色:_____________ 同组者姓名:______________________________

试验二网际协议IP 实验时间:_____________ 成绩:________________ 实验角色:_____________ 同组者姓名:______________________________

数据结构课程作业

数据结构课程作业_A 交卷时间:2017-08-09 10:08:51 一、单选题 1. (7分)设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置脚注(10)表示用10进制表示。 A. 688 B. 678 C. 692 D. 696 纠错 得分: 7 知识点:第五章 展开解析 答案 C 解析第五章第二节综合题目 2. (7分)若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为( ) A. 1,2,3 B. 9,5,2,3 C. 9,5,3 D. 9,4,2,3 纠错 得分: 0 知识点:第九章 展开解析 答案 D 解析第九章第一节有序表的查找

(7分)设某完全无向图中有n个顶点,则该完全无向图中有()条边。 A. n(n-1)/2 B. n(n-1) C. n2 D. n2-1 纠错 得分: 7 知识点:第七章 展开解析 答案 A 解析第七章第一节综合题目 4. (7分)若在任意一棵二叉树中,有n0个叶子结点,有n2个度为2的结点,则:n0=_____ A. n2+1 B. n2-1 C. n2+2 D. n2-2 纠错 得分: 7 知识点:第六章 展开解析 答案 A 解析第六章第二节二叉树的性质 5. (7分)栈的插入和删除操作在()进行。 A. 栈顶 B. 栈底 C. 任意位置 D. 指定位置

得分: 7 知识点:第三章 展开解析 答案 A 解析第三章第一节栈的表示和实现 6. (7分)设有序表中有1000个元素,则用二分查找查找元素X最多需要比较()次。 A. 25 B. 10 C. 7 D. 1 纠错 得分: 7 知识点:第九章 展开解析 答案 B 解析第九章第一节有序表的查找 7. (7分)设某棵二叉树的高度为10,则该二叉树上叶子结点最多有()。 A. 20 B. 256 C. 512 D. 1024 纠错 得分: 7 知识点:第六章 展开解析 答案 C 解析第六章第六节二叉树的性质

数据结构大作业要求

数据结构实验讲义 一实验步骤 随之计算机性能的提高,它所面临的软件开发的复杂度也日趋增加。然而,编制一个10,000行的程序的难度绝不仅仅是一个5,000行的程序两倍,因此软件开发需要系统的方法。一种常用的软件开发方法,是将软件开发过程划分为分析、设计、实现和维护四个阶段。虽然数据结构课程中的实习题的复杂度远不如(从实际问题中提出来的)一个“真正的,,软件,但为了培养一个软件工作者所应具备的科学工作的方法和作风,我们制订了如下所述完成实习的五个步骤:’ (一)问题分析和任务定义 通常,实习题目的陈述比较简洁,或者说是有模棱两可的含义。因此,在进行设计之前,首先应该充分地分析和理解问题,明确问题要求做什么?限制条件是什么。注意:本步骤强调的是做什么?而不是怎么做。对问题的描述应避开算法和所涉及的数据类型,而是对所需完成的任务作出明确的回答。例如:输入数据的类型、值的范围以及输入的形式;输出数据的类型、值的范围及输出的形式;若是会话式的输入,则结束标志是什么?是否接受非法的输入?对非法输入的回答方式是什么等。这一步还应该为调试程序准备好测试数据,包括合法的输入数据和非法形式的输入数据。 (二)数据类型和系统设计 在设计这一步骤中需分逻辑设计和详细设计两步实现。逻辑设计指的是,对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型;详细设计则为定义相应的存储结构并写出各函数的伪码算法。在这个过程中,要综合考虑系统功能,使得系统结构清晰、合理、简单和易于调试,抽象数据类型的实现尽可能做到数据封装,基本操作的规格说明尽可能明确具体。作为逻辑设计的结果,应写出每个抽象数据类型的定义(包括数据结构的描述和每个基本操作的规格说明),各个主要模块的算法,并画出模块之间的调用关系图。详细设计的结果是对数据结构和基本操作的规格说明作出进一步的求精,写出数据存储结构的类型定义,按照算法书写规范用类c语言写出函数形式的算法框架。在求精的过程中,应尽量避免陷入语言细节,不必过早表述辅助数据结构和局部变量。 (三)编码实现和静态检查 编码是把详细设计的结果进一步求精为程序设计语言程序。程序的每行不要超过60个字符。每个函数体,即不计首部和规格说明部分,一般不要超过40行,最长不得超过60行,否则应该分割成较小的函数。要控制if语句连续嵌套的深度。其他要求参见第一篇的

数据结构作业

第一章 1、什么是数据对象、数据元素、数据结构? 2、什么是算法?它有哪些特性?它与程序有何区别? 3、用图形表示下列数据结构: (1)S=(D,R), D={a,b,c,d,e,f,g}, R={, , , , } (2)S=(D,R), D={48,25,64,57,82,36,75}, R={R1, R2} R1={<25,36>, <36,48>, <48,57>, <57,64>, <64,75>, <75,82>} R2={<48,25>, <48,64>, <64,57>, <64,82>, <25,36>, <82,75>} 4、将O (1)、O (n)、O (n2)、O (n3)、O (nlog2n)、O (log2n)、O (2n)按增长率递增排列。 第二章 1 试分析顺序表和链表的各自特点。 2 试编写一个算法,将一个顺序表逆置,并使用最少的辅助存储空间实现。 3 试编写一个算法,将两个元素值递减排列的顺序表合并为一个非递增的顺序表。 4 试编写一个算法,在一个递增有序排列的单链表中插入一个新结点x,并保持有序。 5 试编写一个算法,将一个单链表逆置。 第三章 1 若有4个元素,入栈顺序为ABCD,请列出所有可能的出栈序列。 2 试编写一个算法,计算一个循环队列中包含的元素个数。 3 试编写一个算法,实现链栈的入栈出栈操作。

第四章 1 设字符串S="good ",T="I am a student ",R="!",求: (1) CONCA T(T ,R ,S) (2) SUBSTR(T ,8,7) (3) Len(T) 2 若X 和Y 是两个单链表存储的串,试设计一个算法,找出X 中第一个不在Y 中出现的字符。 3 计算下列串的next 值: (1)a a a b c a a b a (2)a b a a b c a c b (3)b a b b a b a b 第五章 1、 已知二维数组A[m][n]采用行序维主方式存储,每个元素占k 个存储单元,并且第一个元素的存储地址是LOC(A[0][0]),则A[i][j]的地址是什么? 2、 一个稀疏矩阵如图4-17所示,求对应的三元组表示,十字链表表示? 05 10000030200 图1 一个稀疏矩阵 3、 求下列广义表操作的结果 (1) GetHead[(p,h,w)] (2) GetTail[(b,k,p,h)] (3) GetHead[(a,b),(c,d)] (4) GetTail[(a,b),(c,d)] (5) GetHead[GetTail[((a,b),(c,d))]] (6) GetTail[GetHead[((a,b),(c,d))]] 注:[]为函数的符号 4、 利用广义表的GetHead 和GetTail 运算,将原子student 从下列广义表中分离出来。 (1)L1=(solder,teacher,student,worker,farmer) (2)L2=(solder,(teacher,student),worker,farmer) 5、 画出下列广义表的头尾表示法,并求出它的深度。 (1) ((( )), a , (( b,c ) , ( ), d ) , ((( e )))) (2) (((( a ), b )) , ((( ), d ), (e, f )))

大数据结构大作业报告材料

数据结构课程设计课题名称 专业名称 学生姓名 学号+电话 指导教师

评分细则

目录 评分细则----------------------------------------------------------------------------------------------------------------- 2 一、课题描述 ---------------------------------------------------------------------------------------------------------- 4 二、需求分析 ---------------------------------------------------------------------------------------------------------- 4 2.1 ------------------------------------------------------------------------------------------------------------------ 4 2.2- ------------------------------------------------------------------------------------------------------------------4 2.3--------------------------------------------------------------------------------------------------------------------4 三、概要设计 ---------------------------------------------------------------------------------------------------------- 4 3.1 结构分析 ----------------------------------------------------------------------------------------------------------- 4 3.2函数------------------------------------------------------------------------------------------------------------ 4 3.2.1 malloc() --------------------------------------------------------------------------------------------- 4 3.2.2getchar() ----------------------------------------------------------------------------------------------------- 5 3.2.3 list_create() ------------------------------------------------------------------------------------------------ 5 3.2.4 list_disp() --------------------------------------------------------------------------------------------------- 5 3.2.5 list_sort() --------------------------------------------------------------------------------------------------- 5 四、详细设计 ---------------------------------------------------------------------------------------------------------- 5 4.1课题分析 ----------------------------------------------------------------------------------------------------- 5 4.1.1选择 ------------------------------------------------------------------------------------------------- 5 4.1.2冒泡 --------------------------------------------------------------------------------------------------------- 5 4.1.3 堆------------------------------------------------------------------------------------------------------------ 6 4.1.4 快速--------------------------------------------------------------------------------------------------------- 6 4.1.5 基数--------------------------------------------------------------------------------------------------6 4.1.6 希尔--------------------------------------------------------------------------------------------------------- 6 4.1.7 归并--------------------------------------------------------------------------------------------------6 4.2课题实现 ----------------------------------------------------------------------------------------------------- 7 五、测试数据及结果------------------------------------------------------------------------------------------------- 9 六、调试分析及总结----------------------------------------------------------------------------------------------- 10

西工大计算机网络实验三

实验报告 实验名称 --SOCKET编程 一、实验目的 (1)加深对TCP和UDP的理解; (2)实现两台计算机之间TCP/UDP通信。 二、实验过程 原理: socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络信。如下图所示:

TCP通信 原理如图: 代码: 服务器端: #pragma comment(lib, "WS2_32.lib")

#include #include #include using namespace std; int main() { int i=0; WSADATA wsaData; SOCKET oldSocket,newSocket; //客户地址长度 int iLen=0; //发送的数据长度 int iSend=0; //接收的数据长度 int ircv =0; //处世要发送给客户的信息 char buf[20]="I am a server"; //接收来自用户的信息 char fromcli[512]; //客户和服务器的SOCKET地址结构 struct sockaddr_in ser,cli; if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) { cout<<"failed to load winsock"<

数据结构作业及答案

第一章绪论 一、选择题 1.数据结构是一门研究非数值计算的程序设计问题中计算机的1以及它们之间的2和运算等的学科。1 A.数据元素 B.计算方法 C.逻辑存储 D.数据映像 2 A.结构 B.关系 C.运算 D.算法 2.数据结构被形式地定义为(K, R),其中K是1的有限集,R是K上的2有限集。 1 A.算法 B.数据元素 C.数据操作 D.逻辑结构 2 A.操作 B.映像 C.存储 D.关系 3.在数据结构中,从逻辑上可以把数据结构分成。 A.动态结构和静态结构 B.紧凑结构和非紧凑结构 C.线性结构和非线性结构 D.内部结构和外部结构 4.线性结构的顺序存储结构是一种1的存储结构,线性表的链式存储结构是一种2的存储结构。A.随机存取 B.顺序存取 C.索引存取 D.散列存取 5.算法分析的目的是1,算法分析的两个主要方面其一是指2,其二是指正确性和简单性。1 A.找出数据结构的合理性 B.研究算法中的输入和输出的关系 C.分析算法的效率以求改进 D.分析算法的易懂性和文档性 2 A.空间复杂度和时间复杂度 B.研究算法中的输入和输出的关系 C.可读性和文档性 D.数据复杂性和程序复杂性k 6.计算机算法指的是1,它必须具备输入、输出和2等5个特性。 1 A.计算方法 B.排序方法 C.解决问题的有限运算序列 D.调度方法 2 A.可执行性、可移植性和可扩充性 B.可行性、确定性和有穷性 C.确定性、有穷性和稳定性 D.易读性、稳定性和安全性 7.线性表的逻辑顺序与存储顺序总是一致的,这种说法。A.正确 B.不正确 8线性表若采用链式存储结构时,要求内存中可用存储单元的地址。 A.必须连续的 B.部分地址必须连续的 C.一定是不续的D连续不连续都可以 9.以下的叙述中,正确的是。A.线性表的存储结构优于链式存储结构 B.二维数组是其数据元素为线性表的线性表C.栈的操作方式是先进先出D.队列的操作方式是先进后出10.每种数据结构都具备三个基本运算:插入、删除和查找,这种说法。A.正确B.不正确 二、填空题1.数据逻辑结构包括三种类型、和,树形结构和图形结构合称为。2.在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。3.算法的五个重要特性是、、、、。 4.下面程序段的时间复杂度是。 for( i = 0; i < n; i++) for( j = 0; j < m; j++) A[i][j] = 0; 5.下面程序段的时间复杂度是。 i = s = 0; while ( s < n) { i ++; /* i = i +1*/ s += i; /* s = s + i*/ } 6.下面程序段的时间复杂度是。 s = 0; for( i = 0; i < n; i++) for( j = 0; j < n; j++) s += B[i][j]; sum = s; 7.下面程序段的时间复杂度是。 i = 1; while ( i <= n ) i = i * 3;

数据结构大作业-纸牌游戏

数据结构课程设计大作业 题目纸牌游戏 专业计算机科学与技术 学生姓名 __________________ 学号 _____________________ 指导教师 __________________ 完成日期 __________________ 信息与工程学院

目录 一、实验内容概述(设计任务与技术要求) (1) 二、实验目的概述(总体设计方案) (1) 三、解题思路的描述(数据结构和算法的设计): (1) 四、源程序清单(源程序中应该附有必要的注释) (2) 五、程序调试及测试结果 (4) 六、结论 (4) 七、参考文献 (5)

【内容摘要】 编号为1~52的牌,正面向上,从第二张开始,以2为基数,是2的倍数的牌翻一次,直到最 后一张牌;然后,从第三张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后从 第四张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;依次类推,知道所有以52 为基数的牌翻过一次。输出:这时正面向上的牌有哪些? 【关键字】 52张纸牌,倍数,基数,数组 【Abstract 】 Numbered 1 to 52 cards, face up, starting from the second to 2 as the base, is a multiple of 2 cards turning on ce, un til the last card; and the n, begi nning from the third to 3 as the base,is a multiple of 3 cards turning once, un til the last card; and the n start from the fourth to 4 as the base, is a multiple of 4 cards turning once, un til the last card; and so on, that was all of 52base of the card turned over on ce.Output: At this time what the cards face up? 【Key words 】 52 cards, multiple, base, array

计算机网络-实验报告1常用网络命令实验

淮海工学院计算机工程学院实验报告书 课程名:《计算机网络》 题目:常用网络命令实验 班级:Z计121 学号:2014140093 姓名:薛慧君

1.目的与要求 理解IP地址、子网掩码、默认网关和DNS服务器的含义,在给定的网络环境中,使用常用网络命令,掌握通过网络命令对网络进行简单分析、测试的基本方法。 2.实验内容 (1)理解IP地址、子网掩码、默认网关和DNS服务器的含义; (2)熟悉和掌握ipconfig,arp,ping命令的用法,理解arp和ping命令之间的关系,掌握连通性测试的方法; (3)理解和掌握tracert命令的用法; (4)熟悉其他网络命令的功能(自选)。 3.实验步骤 Ipconfig命令 Ipconfig命令用来显示主机内IP协议的配置信息: 用ipconfig /all,则可以得到更多的信息:主机名、DNS服务器、节点类型、网络适配 器的物理地址、主机的IP地址、子网掩码以及默认网关等。

Ping命令 Ping命令用来检测一帧数据从当前主机传送到目的主机所需要的时间: (1)在不删除默认网关的情况下: ①ping本网的主机 ②ping外部网络主机 如果ping某一网络地址https://www.360docs.net/doc/ed15384628.html,,出现:"Reply from 111.13.100.91: bytes=32ms time=32ms TTL=50"则表示本地与该网络地址之间的线路是畅通的;如果出现"Request timed out",则表示此时发送的小数据包不能到达目的地。 (2)当删除默认网关时: 可以访问本网主机,但不可以访问外网主机

Arp命令 用arp -a 查看arp列表里的mac地址 Tracert命令 tracert这个程序的功能是判定数据包到达目的主机所经过的路径、显示数据包经过的中继节点清单和到达时间。

西电数据结构大作业

题目:数据结构上机报告学院:电子工程学院 专业:信息对抗技术 学生姓名:甘佳霖 学号:14020310092

西安电子科技大学 数据结构课程实验报告实验名称线性表 电子工程学院 1402031 班Array姓名甘佳霖学号 14020310092 同作者 实验日期 2017 年 3 月 18 日

实验一线性表 一、实验目的 1.熟悉线性表的顺序和链式存储结构 2.掌握线性表的基本运算 3.能够利用线性表的基本运算完成线性表应用的运算 二、实验要求 1.设有一个线性表E={e1, e2, … , e n-1, e n},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ e n, e n-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。 2.已知由不具有头结点的单链表表示的线性表中,含有三类字符的数据元素(字母、数字和其他字符),试编写算法构造三个以循环链表表示的线性表,使每个表中只含有同一类的字符,且利用原表中的结点空间,头结点可另辟空间。 三、设计思路 1.顺序表做逆置操作时将对应的首尾元素位置交换,单链表的指针end指向链表的末尾,指针start指向链表头结点,指针s用来找到指向end节点的节点,将指向链表末尾和头结点的存储内容交换,然后头结点指针指向下一节点,s指针从start节点开始遍历寻找指向end 指针的节点,并将end指针赋值为s指针,就完成了单链表的逆置,可以看出单链表和顺序表都可以完成线性表的逆置。 2.分解单链表的实现思路是首先新建3个循环链表,然后顺序遍历单链表,ASCII码判断链表中的元素属于哪一类元素,然后将这个元素添加到对应的循环链表中,从而实现分解单链表的功能。 四、运行结果 1.单链表逆置:

西工大计算机网络作业3

1.当两台计算机分别和中继器、二层交换机、三层交换、路由器相连时,请分别画出计算 机与交换设备五层参考模型; 计算机1 上图为计算机和路由器连接.。三层交换机与上图连接相同。二层路由器与计算机连接只经过数据链路层和物理层,中继器与计算机连接只经过物理层。 2.学习SOCKET编程,写出TCP、UDP通信流程;将实例程序两个同学一组,实现两台计算机之间通信。并写出学习报告; TCP通信流程 客户端服务器

UDP通信流程 客户端服务端 利用socket实现TCP,UDP通信的流程如上图所示。 SOCKET实验报告 一.实验目的 学习SOCKET编程,理解计算机通信的流程,分别实现TCP,UDP协议下两台计算机之间的通信。

Socket编程机制 客户端: (1)客户端程序在运行后,首先需要使调用WSAStartup 函数,确保进程加载socket 应用程序所必须的环境和库文件,如Ws2_32.dll。 (2)调用函数Socket 创建SOCKET,在创建时需指定使用的网络协议、连接类型等。 (3)填充SOCKADDR 结构,指定服务端的地址、端口等。 (4)调用connect 函数连接到服务端。 (5)如果连接成功,就可以使用send 和recv 函数发送和接收数据。 (6)在数据传输完成后,可调用closesocket 函数关闭Socket。 (7)调用WSACleanup 函数释放资源。 服务端: (1)程序在运行后,首先需要使调用WSAStartup 加载Ws2_32.dll。 (2)调用函数socket 创建用于监听的SOCKET,在创建时需指定使用的网络协议、连接类型等。 (3)1 调用bind 函数将Socket 绑定到网络地址和端口。 (4)调用listen 函数开始监听。 (5)调用accept 函数等待客户端连接。在客户端连接后,accept 函数返回,得到连接Socket。在accept 函数返回后,可立即再调用,以处理其他客户端的连接。 (6)得到连接Socket 后,可调用send 和recv 发送、接收数据。 (7)在数据传输完成后,可调用closesocket 函数关闭Socket。 (8)调用WSACleanup 函数释放DLL。 函数用法: 1.WSAStartup 函数的功能是加载Ws2_3 2.dll 等Socket 程序运行的环境。其返回值用来 判断程序是否调用成功。 2.WSACleanup 函数释放Ws2_32.dll 库,函数无参数。 3.Socket 函数的功能是建立一个绑定到指定协议和传输类型的Socket。用来指定网络地 址的类型,传输类型,传输协议。 4.send函数的功能是向连接的另一端发送数据。参数为套接字,发送的数据,发送数据长 度。Send成功则返回实际发送的数据,失败则返回SOCKET_ERROR. 5.recv函数的功能时是从连接的另外一端接收数据。 6.closesocket函数用于关闭socket。 7.bind函数的功能是将socket与网络地址和端口绑定起来。 8.listen的函数是将socket的状态设置为监听,以使客户端程序可以连接。 9.accept函数的功能是接收客户端的连接,accpet函数直到客户端有连接后才会返回。

相关文档
最新文档