北京理工大学数据结构作业(全)

北京理工大学数据结构作业(全)
北京理工大学数据结构作业(全)

北理工数据结构作业

第二章作业

1、在什么情况下用顺序表比链表好?(题集2.3)

需要对线性表进行随机存取时,顺序表比链表好。

2、已知L是带表头结点的非空单链表,且P结点既不是首元结点,也不是尾元结点,试从

下列提供的答案中选择合适的语句序列。(题集2.7)

a.删除P结点的直接后继结点的语句序列是11 3 14。

b.删除P结点的直接前驱结点的语句序列是10 12 8 3 14。

c.删除P结点的语句序列是10 12 7 3 14。

d.删除首元结点的语句序列是12 11 3 14。

e.删除尾元结点的语句序列是12 11 3 14。

(1)p = p->next;

(2)p->next = p;

(3)p->next = p->next->next;

(4)p = p->next->next;

(5)while ( p!=NULL ) p=p->next;

(6)while ( q->next!=NULL ) { p=q; q=q->next; }

(7)while ( p->next!=q ) p=p->next;

(8)while ( p->next->next!=q ) p=p->next;

(9)while ( p->next->next!=NULL ) p=p->next;

(10)q=p;

(11)q=p->next;

(12)p=l;

(13)l=l->next;

(14)free(q);

3、算法设计。设顺序表va中的数据元素递增有序,请设计一算法,将x插入到顺序表的

适当位置,以保持该表的有序性。(题集2.11)

typedef struct{

ElemType *elem;

int length;

int listsize;

}Sqlist;

Status ListInsert_Sq(Sqlist &va , ElemType x){

if(va.length==va.listsize) return ERROR;

for(i=va.length-1;i>=0&&x

va.elem[i+1]=x;

va.length++;

return OK;

}

4、算法设计。请设计一个算法,实现顺序表的原地逆置,即利用原表的存储空间将线性表

(a1,a2,……,an)逆置为(an,……,a2,a1)。(题集2.21)

typedef struct{

ElemType *elem;

int length;

int listsize;

}Sqlist;

void ListReverse_Sq(Sqlist &L){

int i, j, x;

for(i=0,j=L.length-1;i

x=L.elem[j];

L.elem[j]=a.elem[i];

L.elem[i]=x;}

}

5、算法设计。请设计一个算法,实现单链表的原地逆置。

typedef struct LNode{

ElemType data;

struct LNode *next;

}LNode,*Linklist;

void LinkReverse(Linklist &L){

Linklist p,q;

p=L﹣>next;

L﹣>next=NULL;

while(p){

q=p;

p=p﹣>next;

q﹣>next=L﹣>next;

L﹣>next=q;

}

return L;

}

第三章作业

1、写出下列程序段的输出结果(题集3.2)。

viod main ( )

{ Stack S;

char x, y;

InitStack (S);

x=’c’; y=’k’;

Push(S, x); Push(S, ’a’); Push(S, y);

Pop(S, x); Push(S, ’t’); Push(S, x);

Pop(S, x); Push(S, ’s’);

while ( ! StackEmpty(S) )

{ Pop(S, y);

printf (y);

}

printf(x);

}

结果:stack

2、简述下列算法的功能(栈的元素类型SElemType为int)。(题集3.3)。(1)Ststus algo1(Stack S)

{ int I, n, A[255];

n=0;

while ( ! StackEmpty(S) )

{ n++; Pop(S, A[n]);

}

for ( i=1; i<=n; i++ )

Push(S, A[n]);

}

实现栈中元素的逆置

(2)Status algo2(Stack S, int e)

{ Stack T; int d;

InitStack (T);

while ( ! StackEmpty(S) )

{ Pop(S, d);

if ( d!=e ) Push(T, d);

}

while ( ! StackEmpty(T) )

{ Pop (T, d);

Push (S, d);

}

}

删除栈S中所有值为e的元素

3、设有4个元素1、2、3、4依次进栈,而出栈操作可随时进行(进出栈可任意交错进行,但要保证进栈次序不破坏1、2、3、4的相对次序),请写出所有可能的出栈次序。

共14种情况:

1234,1243,1324,1342,1432,2134,2143,2314,2341,2431,3421,3241,3214,4321。

4、写出下列程序段的输出结果(队列中的元素类型QelemType为char)。(题集3.12)

viod main ( )

{ Queue Q; InitQueue(Q);

char x=’e’, y=’c’;

EnQueue(Q, ’h’); EnQueue(Q, ’r’); EnQueue(Q, y);

DeQueue(Q, x); EnQueue(Q, x);

DeQueue(Q, x); EnQueue(Q,’a’);

while ( ! QueueEmpty(Q) )

{ DeQueue(Q, y);

printf(y);

}

}

cha

5、简述下列算法的功能(栈和队列的元素类型均为int)。(题集3.13)

void algo3(Queue &Q)

{ Stack S; int d;

InitStack (S);

while ( ! QueueEmpt(Q) )

{ DeQueue(Q, d); Push(S, d);

}

while ( ! StackEmpty(S) )

{ Pop(S, d); EnQueue(Q, d);

}

}

利用栈S将队列Q中的元素进行逆置。

第六章作业

1、一棵度为2的树与一棵二叉树有何区别?(题集6.2)

度为2的树一定有度为2的结点,而二叉树节点的度只要满足小于等于2即可,因此不一定有度为2的结点;度为2的树结点的孩子的顺序是无序的,而二叉树结点的孩子是有序的。

2、假设一棵二叉树的层序序列为ABCDEFGHIJ和中序序列为DBGEHJACIF。清画出该树(题集6.29)。

3、假设二叉树如下,请分别写出先序、中序和后序遍历结果,并画出该二叉树对应的森林。

先序遍历:ABDGCEFH

中序遍历:DGBAECHF

后序遍历:GDBEHFCA

4、画出与下列已知序列对应的树T。(题集6.23)

树的先根次序访问的序列为:GFKDAIEBCHJ;

树的后根次序访问的序列为:DIAEKFCJHBG。

5、请编写一个递归算法,将二叉树中所有结点的左、右子树相互交换。(题集6.43)

typedef struct BiTNode {

TelemType data;

struct BiTNode *lchild,*rchild;

}BiTNode,*BiTree;

void Exchange(BiTree &T){

BiTree Temp;

If(T->lchild||T->rchild){

Temp=T->lchild;

T->lchild=T->rchild;

T->rchild=Temp;

}

if(T->lchild) Exchange(T->lchild);

if(T->rchild) Exchange(T->rchild);

}

第七章作业

1、已知有向图,请给出该图的

(1)每个顶点的入/出度;

(2)

(3) 邻接表;

1 2 3 4 5

6

(4) 逆邻接表。(题集7.1)

1 2 3 4 5 6

2、 请对下列无向带权图进行操作:(题集7.7)。

(1)写出它的邻接矩阵,并按普里姆算法求最小生成树; 邻接矩阵:

普里姆算法求最小生成树:

(2)写出它的邻接表,并按克鲁斯卡尔算法求最小生成树;

邻接表:

克鲁斯卡尔算法求最小生成树:

3、 请设计算法,由依次输入的顶点数目、弧数目、各顶点的信息和各条弧的信息建立有向

图的邻接表。(题集7.14) #define MAX_VERTEX_NUM 20 typedef struct ArcNode{ int adjvex;

struct ArcNode *nextarc; InfoType *info; }ArcNode;

typedef struct VNode{ VertexType data; ArcNode *firstarc;

}Vnode,AdjList[MAX_VERTEX_NUM]; typedef struct { AdjList vertices; int vexnum,arcnum; int kind; }ALGraph;

Status CreateAdjList (ALGraph &G) {

int i,j,k;

ArcNode p;

VertexType v1,v2;

InfoType x;

scanf(&G.vexnum,&G.arcnum);//输入顶点数、边数

for(i=0;i

{

scanf(&G.vertices[i].data);

G.vertices[i].firstarc=NULL;

}

for(k=0;k

{

scanf(&v1,&v2,&x);//输入一条边依附的弧尾顶点v1、弧头顶点v2、权值x

i=LocateVex(G,v1);

j=LocateVex(G,v2);

p= (ArcNode*)malloc(sizeof(ArcNode))

p->adjvex=j;

p->info=x;

p->nextarc=G.vertices[i].firstarc;//将p逆向插入链表G.vertices[i]

G.vertices[i].firstarc=p;

}

return OK;

}// CreateAdjList

第九章作业

1、分别画出在线性表(a , b , c , d , e , f , g )中进行折半查找,以查关键字等于e、f和g 的过程。(题集9.2)

(1)查e

1): a b c d e f g

↑low ↑mid ↑high

此时d

说明d若存在,必在区间[mid+1,high]

令low=mid+1;

2): a b c d e f g

↑↑↑

low mid high

此时f>e

说明d若存在,必在区间[low,mid-1]

令high=mid–1;

3): a b c d e f g

high↑low

↑mid

此时mid指向的元素为e,查找成功;

(2)查f

1): a b c d e f g

↑low ↑mid ↑high

此时d

说明f若存在,必在区间[mid+1,high]

令low=mid + 1;

2): a b c d e f g

↑↑↑

low mid high

此时mid指向的元素为f,查找成功;

(3)查g

1): a b c d e f g

↑low ↑mid ↑high

此时d

说明g若存在,必在区间[mid+1,high]

令low=mid+1;

2): a b c d e f g

↑↑↑

low mid high

此时f

说明g若存在,必在区间[mid+1,high]

令low=mid+1;

3): a b c d e f g

high↑low

↑mid

此时mid指向的元素为g,查找成功;

2、请将折半查找的算法改写为递归算法。(题集9.26)。

int BinSearch(SSTable s;int low,int high;keyType K)

{

if(low>high) return 0;

else {

mid=(low+high)/2;

switch{

case s.elem[mid].key

break;

case s.elem[mid].key==K: return mid;

break;

case s.elem[mid].key>K: return BinSearch(s,low,mid-1,K);

break;

default:;

}//switch

}//else

}//BinSearch

3、编写判别给定二叉树是否为二叉排序树的算法。假设此二叉树是以二叉链表的形式存储的,且树中关键字均不同。(题集9.31)

typedef struct BiTNode{

TElemType data;

struct BiTNode *lchild,*rchild;

}BiTNode,*BiTree;

int flag=1,last=0;

int BiSortTree(Bitree T)//判断二叉树T是否二叉排序树,是则返回1,否则返回0

{

if(T->lchild&&flag) BiSortTree(T->lchild);

if(T->datadata与其中序前驱last比较大小

last=T->data;

if(T->rchild&&flag) BiSortTree(T->rchild);

return flag;

}// BiSortTree

北京理工大学汇编语言实验六磁盘文件存取实验报告

第六章磁盘文件存取实验(设计性实验) 一、实验要求和目的 1.理解文件、目录的概念; 2.了解FCB(文件控制块)方式文件管理方法; 3.掌握文件代号式文件存取方式; 4.学习使用文件指针读取文件 二、软硬件环境 1.硬件环境:计算机系统windows; 2.软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识单元 DOS功能调用中断(INT 21H)提供了两类磁盘文件管理功能,一类是FCB(文件控制块)方式,另一类是文件代号式存取方式。 对于文件的管理,实际上是对文件的读写管理,DOS 设计了四种存取文件 方式:顺序存取方式、随机存取方式、随机分块存取方式和代号法存取方式。文件的处理步骤 A)写之前必须先建立文件、读之前必须先打开文件。 B)写文件之后一定要关闭文件。通过关闭文件,使操作系统确认此 文件放在磁盘哪一部分,写后不关闭会导致写入文件不完整。 1、文件代号式存取方式: 当用户需要打开或建立一个文件时,必须提供文件标识符。文件标识符用ASCII Z 字符串表示。ASCII Z 字符串是指文件标识符的ASCII 字符串后面再加1 个“0”字符。文件标识符的字符串包括驱动器名、路径名和文件名。其格式为 [d:][path]filename[.exe] 其中d 为驱动器名,path 为路径名,.exe 为文件名后缀。 中断 21H 提供了许多有关目录和文件操作的功能,其中文件代号式存取方式常用的功能如下: 2、操作目录的常用功能 39H——创建目录 3BH——设置当前目录 3AH——删除目录 47H——读取当前目录 有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料 之目录控制功能。 3、用文件句柄操作文件的常用功能 3CH——创建文件 4EH——查找到第一个文件 3DH——打开文件 4FH——查找下一个文件 3EH——关闭文件 56H——文件换名 3FH——读文件或设备 57H——读取/设置文件的日期和时间 40H——写文件或设备 5AH——创建临时文件 41H——删除文件 5BH——创建新文件

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

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、掌握子程序有关基本知识,学会子程序设计方法; 2、掌握主程序与子程序之间的调用关系及调用方法; 3、掌握汇编语言字符串处理方法; 4、掌握字符串的输入输出程序设计方法; 5、掌握数制转换程序实现方法。 二、实验软硬件环境 1、硬件环境:惠普64 位一体化计算机及局域网; 2、软件环境:windows 8,红蜘蛛管理系统,MASM for Windows。 三、实验相关知识 把功能相对独立的程序段单独编写和调试,作为一个相对独立的模块供程序使用,就性成子程序。子程序可以实现源程序的模块化,可简化源程序结构,可以提高编程效率。 1) 子程序的定义语句格式 汇编语言子程序以proc 语句行开始,以endp 语句行结束。如: 过程名PROC near[或far] 过程体 .......................... 过程名ENDP 在主程序中用CALL 过程名调用。主程序和子程序之间传递参数通常通过栈来进行,当然也可以用某些缺省的寄存器或内存来传递。但以通过栈来传递参数程序的通用性最强。 2) 子程序调用说明 子程序从PROC 语句开始,以ENDP 语句结束,程序中至少应当包含一条RET 语句用以返回主程序。在定义子程序时,应当注意其距离属性:当子程序和调用程序在同一代码段中时,用NEAR 属性;当子程序及其调用程序不在同一个代码段中时,应当定义为FAR 属性。当由DOS 系统进入子程序时,子程序应当定义为FAR 属性。为执行子程序后返回操作系统,在子程序的前几条指令中设置返回信息。 3) 子程序使用中的问题 A、主程序调用子程序是通过CALL 指令来实现的。子程序执行后,通过RET 指令, 返回主程序调用指令CALL 的下一条指令,继续执行主程序。一个子程序可以由 主程序在不同时刻多次调用。如果在子程序中又调用了其他的子程序,则称为子程 序的嵌套。特别是当子程序又能调用子程序本身时,这种调用称为递归。 B、调用子程序时寄存器及所用存储单元内容的保护。如果子程序中要用到某些寄存器 或存储单元时,为了不破坏原有的信息,要将寄存器或存储单元的原有内容压栈保 护,或存入子程序不用的寄存器或存储单元中。 C、用于中断服务的子程序则一定要把保护指令安排在子程序中,这是因为中断是随机 出现的,因此无法在主程序中安排保护指令。 D、调用程序在调用子程序时需要传送一些参数给子程序,这些参数是子程序运算中所 需要的原始数据。子程序运行后要将处理结果返回调用程序。原始数据和处理结果 的传递可以是数据,也可以是地址,统称为参数传递。 E、参数传递必须事先约定,子程序根据约定从寄存器或存储单元取原始数据(称入口 参数);进行处理后将处理结果(称出口参数)送到约定的寄存器或存储单元,返回到调用程序。参数传递一般有下面三种方法:用寄存器传递:适用于参数传递较少、

数据结构作业

作业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://排队

北京理工大学汇编语言实验报告实验五 子程序设计实验

实验五子程序设计实验(设计性实验) 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言子程序设计方法; 3.熟悉利用汇编语言子程序参数传递方法; 4.熟悉汇编语言字符串处理基本指令的使用方法; 5.掌握利用汇编语言实现字符串的输入输出程序设计方法; 6.掌握数制转换程序实现方法。 二、软硬件环境 1、硬件环境:计算机系统windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 A)子程序知识要点: 1、掌握子程序的定义语句; 过程名 PROC [near/far] 过程体 RET 过程名 ENDP 2.子程序结构形式 一个完整的子程序一般应包含下列内容: 1. )子程序的说明部分 在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法. 说明时,应含如下内容: .子程序名:命名时要名中见意. .子程序的功能:说明子程序完成的任务; .子程序入口参数:说明子程序运行所需参数及存放位置; .子程序出口参数:说明子程序运行结果的参数及存放位置; .子程序所占用的寄存器和工作单元; .子程序调用示例; 2、)掌握子程序的调用与返回 在汇编语言中,子程序的调用用CALL,返回用RET 指令来完成。 .段内调用与返回:调用子程序指令与子程序同在一个段内。因此只修改IP; .段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。 3.)子程序的现场保护与恢复 保护现场:在子程序设计时,CPU 内部寄存器内容的保护和恢复。 一般利用堆栈实现现场保护和恢复的格式: 过程名PROC [NEAR/FAR]

17春北理工《操作系统》在线作业

2017秋17春北理工《操作系统》在线作业 一、单选题(共20 道试题,共40 分。) 1. 操作系统中有一类程序,其执行过程不可中断,该程序叫做:( ) A. 过程 B. 子程序 C. 原语 D. 模块机制 正确答案: 2. 操作系统向用户提供了使用计算机的程序一级的接口为() 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. UNIX系统中,()是实现把一个进程的输出连接到另一个进程的输入功能的机制。 A. 普通文件 B. 特殊文件 C. 目录文件 D. 管道文件 正确答案: 8. 虚拟存储器的最大容量() A. 为内外存容量之和 B. 由计算机的地址结构决定 C. 是任意的 D. 由作业的地址空间决定 正确答案: 9. 以下叙述中,不正确的是() A. 采用动态重定位,在必要时可以改变装入的作业在主存中的存放区域 B. 采用动态重定位的系统支持“程序浮动” C. 采用静态重定位的系统不支持“程序浮动” D. 采用动态和静态重定位的系统都支持“程序浮动” 正确答案: 10. 吞吐量是指:( ) A. 单位时间内完成的信息量 B. 操作系统响应进程命令需要的信息量 C. 完成作业或进程所需要的信息量 D. 都不对 正确答案: 11. 计算机系统的二级存储包括() A. 主存储器和辅助存储器 B. ROM和RAM C. 超高速缓存和内存储器 D. CPU寄存器和主存缓冲区 正确答案: 12. 最佳适应算法通常是将空闲区按()排列 A. 地址大到小 B. 地址小到大 C. 空间大到小 D. 空间小到大 正确答案: 13. 适合多道程序运行的最简单的方案是( ) A. 分页式存储管理 B. 固定分区式存储管理 C. 分段式存储管理

数据结构课程作业

数据结构课程作业_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语句连续嵌套的深度。其他要求参见第一篇的

北京理工大学汇编试题

一、数制转换,以下数为带符号数,表达成字节或字的形式:(10分) (-327)10 = ()2 (70b6)16=()10 (11010001)2 =()10 (0101010101011001)2=()10 ( 2572)10 =()16 二、指出划线部分的寻址方式,并计算其物理地址:(10分) 已知: (CS)=2100H, (DS)=2400H, (ES)=2800H, (SS)=2600H, (BX)=0600H, (DI)=0200H, (SI)= 0300H, (BP)=0400H, BUF=1000H 1、MOV CL ES:[1500H] ;寻址方式:物理地址: 2、CMP SI, [DI] ;寻址方式:物理地址: 3、ADD AX, BUF [BP] [SI] ;寻址方式:物理地址: 4、CALL WORD PTR CS:[SI] ;寻址方式:物理地址: 5、LEA DX, [BX+SI] ;寻址方式:物理地址: 三、已知一程序数据段如下,请在右边表格中填写该数据段数据存储的形式。(12 分,未初始化的单元填写“xx”) DATA SEGMENT Array C=50H BUFFER DB 'B',0BH, B_BYTE LABEL BYTE DATA1 DW 0FFAAH ORG $+1 DATA2 DW B_BYTE DATA3 DW C DATA4 DB 3 DUP(20H),0FFH DATA ENDS 四、写出下列程序段的运行结果,并逐条注释每条指令。

1. 该程序段执行后,BX= .,为什么?(用图表示)(9分)ADDR DW PROC0,PROC1,PROC2,PROC3,PROC4,PROC5,PROC6 DW PROC7,PROC8,PROC9 LEA SI,ADDR ADD SI,2 MOV BX,[SI] INC SI INC SI PUSH BX MOV AX,[SI] INC SI INC SI PUSH AX PUSH BP MOV BP,SP MOV DX,[BP+2] CALL [SI] … PROC1 PROC MOV BX,1 RET PROC1 ENDP PROC2 PROC MOV BX,2 RET PROC2 ENDP PROC3 PROC MOV BX,3 RET PROC3 ENDP 余此类推… (9分)2. 下面这段程序的功能是。

北理工应用文在线作业答案

北京理工大学应用文写作在线作业答案 北理工应用文在线作业答案 第1阶段第一阶段 第2阶段第二阶段 计划的标题同许多事务文书一样,不必写明时限 写总结不一定要按照完成工作的时间先后顺序来写 调查报告可以用于向上级机关汇报工作,供领导决策参考 对未来一定时期的任务作出预想性安排的文种是 总结的开头包括的内容,下列不准确的一项是 调查报告在格式上没有固定的要求,一般包括 计划的种类很多,而且从不同的角度可以对其进行不同的分类,如按其内容分,可将其分为

综合性计划和 总结的正文一般包括基本情况、成绩收获、____________、经验体会等几部分内容 关于计划的主要作用,以下叙述正确的是 总结主体的主要内容包括 条款式合同适用于工程承包、科技合作、合作生产、技术引进等内容比较的经济合同。 招标、投标文书最为突出的两大特点是竞争性和公开性。 我国《广告法》中所称的广告包括商业广告和非商业广告。 下列计划标题拟定恰当的一项是 写作调查报告,在表达方式上,要做到 一篇演讲稿的结尾以极富鼓动性的言辞号召人们为某种目的、某种理想而行动起来。这种结尾的方式叫 经济活动分析报告的标题各项内容中不能省去的一项是

是审计机构或审计人员在完成某一项审计工作后,向委托者或授权者提交的情况书面报告。投标书一般是由_____________设计并送给投标单位的。 审计报告写作应注意的事项 第3阶段第三阶段 个人请柬应一人一柬,夫妻也不可合写一柬。 撰写欢迎词要大量选择感情色彩浓烈,感染力量强大的形容词、比喻词、象征词。 启事的标题可以只用事由表示。 消息的第一自然段或开头的一两句话,一般被称作(),它将消息最重要、最新鲜的事实概括出来,并吸引读者。 通讯写作首先要注意 不管是欢迎词表达“有朋自远方来,不亦乐乎”的愉悦心情,还是欢送词表达亲朋远行的依依惜别之情,都具有的特点是( )。 着重记述社会变化、风土人情和建设状况,并在报纸上常以“巡礼”、“侧记”等形式出现的新闻体裁是____________。 广播稿主要使用语言来影响听众,所以_________是其最大特色。 消息有不同的划分方法,如从写作的角度来划分,可分为()四类。 请柬结尾的礼貌用语有 一般书信常用于个人之间的交往,也可以是个人写给单位或集体的 申请书内容比较单纯,一般一事一书 介绍信是用来介绍联系接洽事宜的一种应用文体,它只具有介绍的作用 中央电视台的新闻联播属于 下列材料不适合写贺信的是 下面关于悼词写作不正确的一项是 书信的种类很多,按使用目的和范围可分一般书信和( )两大类 下列语句叙述有错误的有 报告要反映工作实践,是可以运用某些修辞手法写得生动些,但有些修辞手法是不能使用的。

数据结构作业

第一章 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

北京理工大学汇编实验二报告

北京理工大学汇编实验二报告

本科实验报告实验名称:算术运算类操作实验

一、实验要求和目的 1、了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式; 2、掌握各类运算类指令对各状态标志位的影响及测试方法; 3、熟悉汇编语言二进制多字节加减法基本指令的使用方法; 4、熟悉无符号数和有符号数乘法和除法指令的使用; 5、掌握符号位扩展指令的使用。 6、掌握 BCD 码调整指令的使用方法 二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 1、加减法处理指令 主要有加法指令 ADD,带进位加法 ADC,减法指令 SUB,带进位减法指令 SBB。 2.乘除法指令和符号位扩展指令 主要有无符号数乘法指令MUL,带符号数乘

法指令IMUL,无符号数除法指令DIV,带符号数除法指令 IDIV,以及符号位从字节扩展到字的指令 CBW 和从字扩展到双字的指令 CWD。 3.BCD 码的调整指令 主要有非压缩的BCD 码加法调整指令DAA,压缩的 BCD 码减法调整指令 DAS,非压缩的 BCD 码加法调整指令 AAA,非压缩的 BCD 码减法调整指令 AAS,乘法的非压缩 BCD码调整指令 AAM,除法的非压缩 BCD 码调整指令 AAD。 8088/8086 指令系统提供了实现加、减、乘、除运算的上述基本指令,可对表 1 所示的数据类型进行数据运算。 表 1-2-1 数据类型数据运算表

四、实验内容与步骤 1、对于两组无符号数,087H 和 034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响:(1)实验流程 将一组 操作数 分别用 ADD,SUB,MUL,DIV 运算 (2)实验代码: DATAS SEGMENT BUF1 DB 087H BUF2 DB 034H BUF3 DB 4 DUP(?);此处输入数据段代码 DATAS ENDS

北京理工大学汇编实验五实验报告概要

本科实验报告实验名称:子程序设计实验

实验五子程序设计实验(设计性实验) 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言子程序设计方法; 3.熟悉利用汇编语言子程序参数传递方法; 4.熟悉汇编语言字符串处理基本指令的使用方法; 5.掌握利用汇编语言实现字符串的输入输出程序设计方法; 6.掌握数制转换程序实现方法。 二、软硬件环境 1、硬件环境:计算机系统windows; 2、软件环境:装有MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 A)子程序知识要点: 1、掌握子程序的定义语句;过 程名PROC [near/far] 过程 体 RET 过程名ENDP 2.子程序结构形式一个完整的子程序一般应包含下列内容: 1. )子程序的说明部分 在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法. 说明时,应含如下内容: .子程序名:命名时要名中见意. .子程序的功能:说明子程序完成的任务; .子程序入口参数:说明子程序运行所需参数及存放位置; .子程序出口参数:说明子程序运行结果的参数及存放位置; .子程序所占用的寄存器和工作单元; .子程序调用示例; 2、)掌握子程序的调用与返回在汇编语言中,子程序的调用用CALL,返回用RET指令 来完成。 .段内调用与返回:调用子程序指令与子程序同在一个段内。因此只修改IP; .段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。 3.)子程序的现场保护与恢复保护现场:在子程序设计时,CPU内部寄存器内容的

保护和恢复。 一般利用堆栈实现现场保护和恢复的格式:过程名PROC [NEAR/FAR] PUSH AX PUSH BX . . PUSH DX . . . POP DX . . . POP AX RET 过程名ENDP 4.子程序的参数传递方法 1.寄存器传递参数这种方式是最基本的参数传递方式。 2.存储器单元传(变量)递参数 这种方法是在主程序调用子程序前,将入口参数存放到约定的存储单元中;子程序运行时到约定存储位置读取参数;子程序执行结束后将结果也放在约定存储单元中。 3.用堆栈传递参数 利用共享堆栈区,来传递参数是重要的的方法之一。 B)字符、字符串输入输出知识要点: 在实际应用中,经常需要从键盘输入数据并将结果等内容显示到屏幕上,方便程序控制及查看结果。汇编语言的数据输入和输出分成两类,一是单个字符数据的输入输出,一是字符串数据的输入输出。都可以通过DOS功能调用来实现,下面就分别介绍下用来实现数据输入输出的功能调用的使用方法。 1、单个字符输入 单个字符输入可以利用DOS的1号功能调用来完成,使用方法为: MOV AH,1 INT 21H 这两条语句执行后,光标会在屏幕上闪烁,等待输入数据,输入的数据以ASCII 码形式存储在AL寄存器中。 2、单个字符输出 单个字符输出可利用DOS2号功能调用来完成,使用方法为: MOV DL,’?’ MOV AH,2

相关文档
最新文档