中央电大数据结构形成性考核册实验报告

合集下载

数据结构实验报告4(中央电大)

数据结构实验报告4(中央电大)

实验报告(四)专业名称 课程名称批改教师主持教师实验成绩校外评阅教师实验名称 图的存储方式和应用使用主要设备 PC, VC++6.0 实验要求 1.掌握图的存储结构,了解它的应用; 2.理解图的"最短路径"计算方法,了解相关的程序设计技术。

实验报告内容:实验4.1 建立图的邻接矩阵图4-1* 设计程序代码如下:#include<stdio.h>#define MaxVertexNum 5#define MaxEdgeNum 20#define MaxValue 1000typedef int VertexType;typedef VertexType vexlist [MaxVertexNum];typedef int adjmatrix [MaxVertexNum] [MaxVertexNum];void Createl(vexlist Gv,adjmatrix GA,int n,int e){int i,j,k,w;printf("输入%d个顶点数据\n",n);for(i=0;i<n;i++) scanf("%d",&Gv[i]);for(i=0;i<n;i++)for(j=0;j<n;j++){if(i==j) GA[i][j]=0;else GA[i][j]=MaxValue;}Printf("输入一条边的两端点序号i和j及边上的权w\n");printf("输入%d条无向带权边\n",e);for(k=1;k<=e;k++){scanf("%d%d%d",&i,&j,&w);GA[i][j]=GA[j][i]=w;}}void main(){vexlist vl;adjmatrix a;Createl(vl,a,5,8);}????????1。

国家开放大学《数据结构》课程实验报告(实验3 ——栈、队列、递归设计)参考答案

国家开放大学《数据结构》课程实验报告(实验3 ——栈、队列、递归设计)参考答案
{
x=Pop(s); /*出栈*/
printf("%d ",x);
InQueue(sq,x); /*入队*/
}
printf("\n");
printf("(10)栈为%s,",(StackEmpty(s)?"空":"非空"));
printf("队列为%s\n",(QueueEmpty(sq)?"空":"非空"));
ElemType Pop(SeqStack *s); /*出栈*/
ElemType GetTop(SeqStack *s); /*取栈顶元素*/
void DispStack(SeqStack *s); /*依次输出从栈顶到栈底的元素*/
void DispBottom(SeqStack *s); /*输出栈底元素*/
} SeqQueue; /*定义顺序队列*/
void InitStack(SeqStack *s); /*初始化栈*/
int StackEmpty(SeqStack *s); /*判栈空*/
int StackFull(SeqStack *s); /*判栈满*/
void Push(SeqStack *s,ElemType x); /*进栈*/
sq=(SeqQueue *)malloc(sizeof(SeqQueue));
InitQueue(sq);
printf("(8)队列为%s\n",(QueueEmpty(sq)?"空":"非空"));
printf("(9)出栈/入队的元素依次为:");

[计算机软件及应用]电大数据结构本形成性考核册作业14原题带答案

[计算机软件及应用]电大数据结构本形成性考核册作业14原题带答案

数据结构(本)形成性考核作业册使用说明本作业册是中央广播电视大学计算机科与技术专业(本科)数据结构(本)课程形成性考核的依据,与《数据结构(本科)》教材(李伟生主编,中央电大出版社出版)配套使用。

数据结构(本)课程是中央广播电视大学计算机科学技术专业的一门统设必修、学位课程,4学分,共72学时。

其中实验24学时,开设一学期。

本课程的特点是综合性、实践性强,内容抽象,在专业中具有承上启下的作用。

因此,在学习本课程时,要注意理论联系实际,结合教学内容进行上机实践,认真完成作业和实验内容。

本课程的总成绩按百分制记分,其中形成性考核所占的比例为30%,终结性考试占70%(闭卷,答题时限为90分钟)。

课程总成绩达到60分及以上者为合格,可以获得该课程的学分。

本课程的学位课程学分为70分,即课程总成绩达到70分及以上者有资格申请专业学位。

本课程共设计了4次形考作业,每次形考作业均包括实验内容,由各地电大根据学生对作业中各种题型练习和实验的完成情况进行考核。

对于实验内容要求按实验要求认真完成,并提交实验报告。

数据结构(本)课程作业作业1(本部分作业覆盖教材第1-2章的内容)一、单项选择题1.在数据结构中,从逻辑上可以把数据结构分为(C )。

A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部机构2.下列说法中,不正确的是( D )。

A.数据元素是数据的基本单位B.数据项是数据中不可分割的最小可标识单位C.数据可有若干个数据元素构成D.数据项可由若干个数据元素构成3.一个存储结点存储一个(B )。

A.数据项B.数据元素C.数据结构D.数据类型4.数据结构中,与所使用的计算机无关的是数据的(C )。

A.存储结构B.物理结构C.逻辑结构D.物理和存储结构5.下列的叙述中,不属于算法特性的是(D )。

A.有穷性B.输入性C.可行性D.可读性6.算法分析的目的是(C )。

A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性7.数据结构是一门研究计算机中( B )对象及其关系的科学。

数据结构形考实践实验

数据结构形考实践实验

数据结构形考实践实验一、背景介绍数据结构是计算机科学中重要的基础概念之一,是研究数据组织、存储、管理和操作的方法和原则。

在计算机科学领域,对于数据结构的掌握和实践是非常重要的,因为它直接影响着程序的效率和性能。

为了更好地理解和应用数据结构,形考实践实验是必不可少的一环。

二、实验目的数据结构形考实践实验的目的是通过实际应用的方式,巩固和加深对数据结构的理解,并提高对数据结构的实践能力。

本实验旨在让学生通过解决实际问题的方式,熟悉和掌握常见的数据结构及其应用场景。

三、实验内容3.1实验环境在进行数据结构形考实践实验之前,我们需要准备好实验环境,包括以下方面的内容:-操作系统:建议使用W in do ws/L in ux/M a cO S等常见操作系统;-集成开发环境(ID E):可以选择V is ua l St ud io Co de、E cl i ps e等常用ID E;-编程语言:可以选择C/C++、J av a、Py t ho n等常用编程语言。

3.2实验步骤在进行数据结构形考实践实验时,我们可以按照以下步骤进行:1.阅读实验要求和相关文献,了解本次形考实验的目标和要求。

2.分析问题需求,确定合适的数据结构和算法。

3.设计和实现相应的数据结构和算法,注意代码的可读性和可维护性。

4.编写测试用例,对实现的数据结构和算法进行测试和验证。

5.解决实际问题,并对实现的数据结构和算法的效率进行评估和分析。

6.总结实验过程和结果,撰写实验报告。

3.3实验要求在进行数据结构形考实践实验时,需要满足以下要求:1.合理选择和使用数据结构和算法,解决实际问题。

2.程序必须能够正确运行,并具有较高的效率和性能。

3.实验报告要求详细描述实验过程、实验结果和分析。

四、实验案例为了更好地理解数据结构的应用,下面我们给出一个实验案例作为参考。

4.1问题描述假设我们需要设计一个学生信息管理系统,其中包括学生姓名、年龄、性别和成绩等信息。

2019年最新(中央电大)数据结构实验报告2

2019年最新(中央电大)数据结构实验报告2

中央广播电视大学实验报告(学科:数据结构)姓名班级学号实验日期成绩评定教师签名批改日期实验名称:实验二栈、列队、递归程序设计2.1 栈和队列的基本操作【问题描述】编写一个算法,输出指定栈中的栈底元素,并使得原栈中的元素倒置。

【基本要求】(1)正确理解栈的先进后出的操作特点,建立初始栈,通过相关操作显示栈底元素。

(2)程序中要体现出建栈过程和取出栈底元素后恢复栈的入栈过程,按堆栈的操作规则打印结果栈中的元素。

【实验步骤;】(1)运行PC中的Microsoft Visual C++ 6.0程序,(2)点击“文件”→“新建”→对话窗口中“文件”→“c++ Source File”→在“文件名”中输入“X1.cpp”→在“位置”中选择储存路径为“桌面”→“确定”,(3)输入程序代码,程序代码如下:#include <stdio.h>#include <malloc.h>#define MaxSize 100typedef char ElemType;typedef struct{ElemType data[MaxSize];int top; //栈顶指针} SeqStack;//定义栈typedef struct{ElemType elem[MaxSize];int front,rear; //队首和队尾指针} SqQueue;//定义队列//---初始栈函数void InitStack(SeqStack *&s){s=(SeqStack *)malloc(sizeof(SeqStack));s->top=-1;}//----进栈函数int Push(SeqStack *&s,ElemType e){if (s->top==MaxSize-1)return 0;s->top++;s->data[s->top]=e;return 1;}//---显示栈函数void DispStack(SeqStack *s){int i;for (i=s->top;i>=0;i--)printf("%c ",s->data[i]);printf("\n");}//---显示栈底元素void DispBottomStack(SeqStack *s){printf("%c ",s->data[0]);//先进后出,栈底元素为第一个元素,即data[0] printf("\n");}//---判空栈函数int StackEmpty(SeqStack *s){return(s->top==-1);}//---出栈函数int Pop(SeqStack *&s,ElemType &e){if (s->top==-1)return 0;e=s->data[s->top];s->top--;return 1;}//---初始队列函数void InitQueue(SqQueue *&q){q=(SqQueue *)malloc (sizeof(SqQueue));q->front=q->rear=0;}//---入队列函数int InQueue(SqQueue *&q,ElemType e){if ((q->rear+1)%MaxSize==q->front) //队满return 0;q->rear=(q->rear+1)%MaxSize;q->elem[q->rear]=e;return 1;}//---出队列函数int OutQueue(SqQueue *&q,ElemType &e){if (q->front==q->rear) //队空return 0;q->front=(q->front+1)%MaxSize;e=q->elem[q->front];return 1;}//---判空队列函数int QueueEmpty(SqQueue *q){return(q->front==q->rear);}//-----主程序void main(){ElemType e;SeqStack *s;printf("(1)初始化栈s\n");InitStack(s);printf("(2)栈为%s\n",(StackEmpty(s)?"空":"非空"));printf("(3)依次进栈元素a,b,c,d,e\n");Push(s,'a');//入栈元素1Push(s,'b');//入栈元素2Push(s,'c');//入栈元素3Push(s,'d');//入栈元素4Push(s,'e');//入栈元素5printf("(4)栈为%s\n",(StackEmpty(s)?"空":"非空"));printf("(5)从栈顶到栈底元素:");DispStack(s);printf("(6)栈底元素为:");DispBottomStack(s);printf("(7)出栈/入队列序列:");SqQueue *q;InitQueue(q);while (!StackEmpty(s)){Pop(s,e);//出栈printf("%c ",e);InQueue(q,e);//入队}printf("\n");printf("(8)栈为%s,",(StackEmpty(s)?"空":"非空"));printf("队列为%s\n",(QueueEmpty(q)?"空":"非空"));printf("(9)出队列/入栈序列:");while (!QueueEmpty(q)){ OutQueue(q,e);//出队Push(s,e);//入栈printf("%c ",e);}printf("\n");printf("(10)栈为%s,",(StackEmpty(s)?"空":"非空"));printf("队列为%s\n",(QueueEmpty(q)?"空":"非空"));free(q);//释放队列printf("(11)从栈顶到栈底元素:");DispStack(s);free(s);//释放栈}程序运行结果如下:2.2 递归程序设计【问题描述】给定一个5位的十进制正整数,用递归法分别编制程序:(1)要求从低位到高位逐次输出各位数字。

2022年国家开放大学《数据结构(本)》形考任务实践活动3

2022年国家开放大学《数据结构(本)》形考任务实践活动3
2022年国家开放大学数据结构(本)形考任务实践活动3
实验
数据结构课程实验报告
学生姓名
学 号
班 级
指导老师
实验名称
栈、队列、递归程序设计
实验成绩
实验报告
实 验 概 述
实验目的:
编写一个算法,输出指定栈中的栈底元素,并使得原栈中的元素倒置。
实验要求:
(1)正确理解栈的先进后出的操作特点,建立初始栈,通过相关操作显示栈底元素。
printf ("(2)栈为%s\n”, (StackEmpty(s)?"空":"非空"));
printf("(3)输入要进栈的数据个数:”);
scanf(飞d”, &n):
printf("依次输入进栈的%d个整数n);
for(i=0; i<n; i++) (
scanf&x);
Push(s, x);
(2)程序中要表达出建栈过程和取出栈底元素后恢复栈的入栈过程,按堆栈的操作 规那么打印结果栈中的元素。
实验基本原理:
(1)采用顺序栈,即用数组存储栈元素。
(2)设定一个临时队列,用来存放从初始栈中出栈的元素。
(3)取出栈底元素后,将队列中的元素逐一出队并压入初始栈中。
卖 验 内 容
实验设计思路、步骤和方法等:
x=Pop(s);
printf(*%d ", x);
InQueue(sq, x);
)
printf ("(10)栈为%s, ”, (StackEmpty(s)?"空":"非空〃));printf("队列为%s\n”, (QueueEmpty(sq)?"空":"非空〃));printf ("(11)出队/进栈的元素依次为;

数据结构形成性考核册第1次作业参考答案

数据结构形成性考核册第1次作业参考答案

《数据结构》形成性考核册第1次作业参考答案第一章绪论一、填空题1、数据操作2、集合结构线性结构树型结构图形结构3、引用类型4、1:1 1:n n:m5、不对6、多个7、O(m*n)8、时间复杂度空间复杂度9、顺序链接索引散列10、O(n2)11、O(n)12、O(n)O(m*n)二、选择题1~8:DBABADDD三、应用题(1)功能:判断n是否是一个素数,若是则返回数值1,否则返回0。

时间复杂度:O(n)。

(2)功能:计算S=1!+2!+…+n!的值。

时间复杂度:O(n)。

(3)功能:计算S=1!+2!+…+n!的值。

时间复杂度:O(n2)。

(4)求出满足不等式1+2+…+i≥n的最小i值。

O(n)。

第二章线性表四、填空题1、A[P-1]2、1083、前驱后继4、最后一个表头5、p->next=q->nextq->next=p6、HL->next=NULLHL->next=HL7、P->next8、Q->next9、P->next s10、从前向后前移n-i11、O(1)O(n)12、(n+1)/213、O(n)O(1)14、A[P].next15、a[j].next=a[i].nexta[i].next=j16、数据值指针五、选择题1~5:BDDBC六、应用题1、(1)、(79,62,34,57,26,48)(2)、(26,34,48,57,62,79)(3)、(48,56,57,62,79,34)(4)、(56,57,79,34)(5)、(26,34,39,48,57,62)2、(1)将类型为List的线性表L中第i个元素移至表尾位置的算法,L中的元素类型为ElemType,假定不需要对i的值进行有效性检查。

void move (List& L, int i){ElemType x=L.list[ i-1];for(int j=i; j<L.size; j++)L.list[ j-1]=L.list[ j ];L.list[L.size-1]=x;}·将线性表L中的第i个元素移入表头的算法与上类似。

[计算机软件及应用]电大数据结构本形成性考核册作业14原题带答案

[计算机软件及应用]电大数据结构本形成性考核册作业14原题带答案

数据结构(本)形成性考核作业册使用说明本作业册是中央广播电视大学计算机科与技术专业(本科)数据结构(本)课程形成性考核的依据,与《数据结构(本科)》教材(李伟生主编,中央电大出版社出版)配套使用。

数据结构(本)课程是中央广播电视大学计算机科学技术专业的一门统设必修、学位课程,4学分,共72学时。

其中实验24学时,开设一学期。

本课程的特点是综合性、实践性强,内容抽象,在专业中具有承上启下的作用。

因此,在学习本课程时,要注意理论联系实际,结合教学内容进行上机实践,认真完成作业和实验内容。

本课程的总成绩按百分制记分,其中形成性考核所占的比例为30%,终结性考试占70%(闭卷,答题时限为90分钟)。

课程总成绩达到60分及以上者为合格,可以获得该课程的学分。

本课程的学位课程学分为70分,即课程总成绩达到70分及以上者有资格申请专业学位。

本课程共设计了4次形考作业,每次形考作业均包括实验内容,由各地电大根据学生对作业中各种题型练习和实验的完成情况进行考核。

对于实验内容要求按实验要求认真完成,并提交实验报告。

数据结构(本)课程作业作业1(本部分作业覆盖教材第1-2章的内容)一、单项选择题1.在数据结构中,从逻辑上可以把数据结构分为(C )。

A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部机构2.下列说法中,不正确的是( D )。

A.数据元素是数据的基本单位B.数据项是数据中不可分割的最小可标识单位C.数据可有若干个数据元素构成D.数据项可由若干个数据元素构成3.一个存储结点存储一个(B )。

A.数据项B.数据元素C.数据结构D.数据类型4.数据结构中,与所使用的计算机无关的是数据的(C )。

A.存储结构B.物理结构C.逻辑结构D.物理和存储结构5.下列的叙述中,不属于算法特性的是(D )。

A.有穷性B.输入性C.可行性D.可读性6.算法分析的目的是(C )。

A.找出数据结构的合理性B.研究算法中的输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性7.数据结构是一门研究计算机中( B )对象及其关系的科学。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中央电大本科数据结构形成性考核册实验报告实验名称:实验一线性表线性表的链式存储结构【问题描述】某项比赛中,评委们给某参赛者的评分信息存储在一个带头结点的单向链表中,编写程序:(1)显示在评分中给出最高分和最低分的评委的有关信息(姓名、年龄、所给分数等)。

(2)在链表中删除一个最高分和一个最低分的结点。

(3)计算该参赛者去掉一个最高分和一个最低分后的平均成绩。

【基本要求】(1)建立一个评委打分的单向链表;(2)显示删除相关结点后的链表信息。

(3)显示要求的结果。

【实验步骤】(1)运行PC中的Microsoft Visual C++ 6.0程序,(2)点击“文件”→“新建”→对话窗口中“文件”→“c++ Source File”→在“文件名”中输入“X1.cpp”→在“位置”中选择储存路径为“桌面”→“确定”,(3)输入程序代码,程序代码如下:#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <iostream.h>#include <conio.h>#define NULL 0#define PWRS 5 //定义评委人数struct pw //定义评委信息{ char name[6];float score;int age;};typedef struct pw PW;struct node //定义链表结点{struct pw data;struct node * next;};typedef struct node NODE;NODE *create(int m); //创建单链表int calc(NODE *h); //计算、数据处理void print(NODE *h); //输出所有评委打分数据void input(NODE *s);//输入评委打分数据void output(NODE *s);//输出评委打分数据void main(){NODE *head;float ave=0;float sum=0;head=create(PWRS);printf("所有评委打分信息如下:\n");print(head);//显示当前评委打分calc(head);//计算成绩printf("该选手去掉1 最高分和1 最低分后的有效评委成绩:\n");print(head);//显示去掉极限分后的评委打分}void input(NODE *s){printf("请输入评委的姓名: ");scanf("%S",&s->);printf("年龄: ");scanf("%d",&s->data.age);printf("打分: ");scanf("%f",&s->data.score);printf("\n");}void output(NODE *s){printf("评委姓名: %8s ,年龄: %d,打分: %2.2f\n",s->,s->data.age,s->data.score); }NODE *create(int m){NODE *head,*p,*q;int i;p=(NODE*)malloc(sizeof(NODE));head=p;q=p;p->next=NULL;for(i=1;i<=m;i++){p=(NODE*)malloc(sizeof(NODE));input(p);p->next=NULL;q->next=p;q=p;}return (head);}void print(NODE *h){ for(int i=1;((i<=PWRS)&&(h->next!=NULL));i++){h=h->next;output(h); }printf("\n");}int calc(NODE *h){NODE *q,*p,*pmin,*pmax;float sum=0;float ave=0;p=h->next; //指向首元结点pmin=pmax=p; //设置初始值sum+=p->data.score;p=p->next;for(;p!=NULL;p=p->next){if(p->data.score>pmax->data.score) pmax=p;if(p->data.score<pmin->data.score) pmin=p;sum+=p->data.score;}cout<<"给出最高分的评委姓名:"<<pmax-><<"年龄:"<<pmax->data.age<<"分值:"<<pmax->data.score<<endl;cout<<"给出最低分的评委姓名:"<<pmin-><<"年龄:"<<pmin->data.age<<"分值:"<<pmin->data.score<<endl;printf("\n");sum-=pmin->data.score;sum-=pmax->data.score;for (q=h,p=h->next;p!=NULL;q=p,p=p->next){if(p==pmin){q->next=p->next; p=q;}//删除最低分结点if(p==pmax) {q->next=p->next; p=q;}//删除最高分结点}ave=sum/(PWRS-2);cout<<"该选手的最后得分是:"<<ave<<endl;return 1;}程序运行结果如下:线性表的顺序存储结构【问题描述】用顺序表A记录学生的信息,编写程序:(1)将A表分解成两个顺序表B和C,使C表中含原A表中性别为男性的学生,B表中含原表中性别为女性的学生,要求学生的次序与原A表中相同。

(2)分别求男生和女生的平均年龄【基本要求】(1)建立学生信息的顺序表A。

(2)显示B表和C表中的相关信息。

(3)显示计算结果。

【实验步骤;】(1)运行PC中的Microsoft Visual C++ 6.0程序,(2)点击“文件”→“新建”→对话窗口中“文件”→“c++ Source File”→在“文件名”中输入“X1.cpp”→在“位置”中选择储存路径为“桌面”→“确定”,(3) 输入程序代码,程序代码如下:#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <iostream.h>#include <conio.h>#include <string.h> //包含库函数strcpy的头文件#define NULL 0struct student //定义学生信息{ char name[8];int sex; //0 女: 1:男int age;};typedef struct student STD;int create(STD *m); //创建顺序表int calc(STD *m,STD *n,STD *r,float &Fage,float &Mage); //计算、数据处理void print(STD *m);const int MAX=100; //定义人数void main(){STD A[MAX];STD B[MAX];STD C[MAX];float age1=0,age2=0; //age1男age2女create(A);printf("学生总表A记录如下: \n");print(A);calc(A,B,C,age1,age2);printf("女生名册B记录如下: \n");print(B);printf("男生名册C记录如下: \n");print(C);}int create(STD *m){int n;printf ("请输入班级总人数:\n ");scanf ("%d",&n);m[0].age=n; //置顺序表长度printf("请输入学生信息:\n");for(int i=1;i<=n;i++){printf("姓名: ");scanf("%s",&m[i].name);printf("性别0女1男: ");scanf("%d",&m[i].sex);printf("年龄: ");scanf("%d",&m[i].age);printf("\n");}return 1;}int calc(STD *m,STD *n,STD *r,float &Fage,float &Mage){ int i,j=1,k=1;n[0].age=r[0].age=0;for( i=1;i<=m[0].age;i++){ if(m[i].sex==0){strcpy(n[j].name,m[i].name);n[j].sex=m[i].sex; n[j].age=m[i].age;n[0].age++; Mage+=m[i].age;j++;}else{strcpy(r[k].name,m[i].name);r[k].sex=m[i].sex; r[k].age=m[i].age;r[0].age++;Fage+=m[i].age;k++;}}Mage=Mage/n[0].age; Fage=Fage/r[0].age;cout<<"女生的平均年龄是:"<<Mage<<"男生的平均年龄是:"<<Fage<<endl;return 1;}void print(STD *m){for(int i=1;i<=m[0].age;i++){printf ("姓名:%3s, 性别(0女1男):%d, 年龄:%d\n",m[i].name,m[i].sex,m[i].age);}}程序运行结果如下:实验结束。

相关文档
最新文档