大学数据结构与算法基础实验报告书(参考)
数据结构与算法分析实验报告
![数据结构与算法分析实验报告](https://img.taocdn.com/s3/m/52ea4544a4e9856a561252d380eb6294dc882269.png)
数据结构与算法分析实验报告一、实验目的本次实验旨在通过实际操作和分析,深入理解数据结构和算法的基本概念、原理和应用,提高解决实际问题的能力,培养逻辑思维和编程技巧。
二、实验环境本次实验使用的编程语言为 Python,使用的开发工具为 PyCharm。
操作系统为 Windows 10。
三、实验内容(一)线性表的实现与操作1、顺序表的实现使用数组实现顺序表,包括插入、删除、查找等基本操作。
通过实验,理解了顺序表在内存中的存储方式以及其操作的时间复杂度。
2、链表的实现实现了单向链表和双向链表,对链表的节点插入、删除和遍历进行了实践。
体会到链表在动态内存管理和灵活操作方面的优势。
(二)栈和队列的应用1、栈的实现与应用用数组和链表分别实现栈,并通过表达式求值的例子,展示了栈在计算中的作用。
2、队列的实现与应用实现了顺序队列和循环队列,通过模拟银行排队的场景,理解了队列的先进先出特性。
(三)树和二叉树1、二叉树的遍历实现了先序、中序和后序遍历算法,并对不同遍历方式的结果进行了分析和比较。
2、二叉搜索树的操作构建了二叉搜索树,实现了插入、删除和查找操作,了解了其在数据快速查找和排序中的应用。
(四)图的表示与遍历1、邻接矩阵和邻接表表示图分别用邻接矩阵和邻接表来表示图,并比较了它们在存储空间和操作效率上的差异。
2、图的深度优先遍历和广度优先遍历实现了两种遍历算法,并通过对实际图结构的遍历,理解了它们的应用场景和特点。
(五)排序算法的性能比较1、常见排序算法的实现实现了冒泡排序、插入排序、选择排序、快速排序和归并排序等常见的排序算法。
2、算法性能分析通过对不同规模的数据进行排序实验,比较了各种排序算法的时间复杂度和空间复杂度。
四、实验过程及结果(一)线性表1、顺序表在顺序表的插入操作中,如果在表头插入元素,需要将后面的元素依次向后移动一位,时间复杂度为 O(n)。
删除操作同理,在表头删除元素时,时间复杂度也为 O(n)。
数据结构与算法实验报告5-查找与排序
![数据结构与算法实验报告5-查找与排序](https://img.taocdn.com/s3/m/1e7c4e20bf1e650e52ea551810a6f524ccbfcb8f.png)
北京物资学院信息学院实验报告
课程名_数据结构与算法
实验名称查找与排序
实验日期年月日实验报告日期年月日姓名______ ___ 班级_____ ________ 学号___
一、实验目的
1.掌握线性表查找的方法;
2.了解树表查找思想;
3.掌握散列表查找的方法.
4.掌握插入排序、交换排序和选择排序的思想和方法;
二、实验内容
查找部分
1.实现顺序查找的两个算法(P307), 可以完成对顺序表的查找操作, 并根据查到和未查到两种情况输出结果;
2.实现对有序表的二分查找;
3.实现散列查找算法(链接法),应能够解决冲突;
排序部分
4.分别实现直接插入排序、直接选择排序、冒泡排序和快速排序算法
三、实验地点与环境
3.1 实验地点
3.2实验环境
(操作系统、C语言环境)
四、实验步骤
(描述实验步骤及中间的结果或现象。
在实验中做了什么事情, 怎么做的, 发生的现象和中间结果, 给出关键函数和主函数中的关键段落)
五、实验结果
六、总结
(说明实验过程中遇到的问题及解决办法;个人的收获;未解决的问题等)。
数据结构与算法实验报告
![数据结构与算法实验报告](https://img.taocdn.com/s3/m/e0dd80130722192e4536f6fa.png)
数据结构实验报告题目:线性表班级:网络工程1401班学号: 1408020106指导教师:高峰日期: 2016/7/6实验一:线性表一:实验要求掌握数据结构中线性表的基本概念。
熟练掌握线性表的基本操作:创建、插入、删除、查找、输出、求长度及合并并运算在顺序存储结构撒谎能够的实验。
熟练掌握链表的各种操作和应用。
二.实验内容1. 编程实现在顺序存储的有序表中插入一个元素(数据类型为整型)。
2. 编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。
三:实验过程及步骤源代码:#include<stdio.h>#include<malloc.h>#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef struct{int * elem;int length;int listsize;}SqList;//SqList sq;void InitList_Sq(SqList *sq) //初始化列表{sq->elem=(int *)malloc(LIST_INIT_SIZE*sizeof(int));sq->length=0;sq->listsize=LIST_INIT_SIZE;printf("---申请空间成功---!\n");}void GetElem(SqList *sq,int i)//获取第i位置元素的值{int *p;p=&(sq->elem[i-1]);printf("%d",*p);printf("\n");}int ListInsert_Sq(SqList *sq,int i,int a)//在i位置之前插入a{int *p,*q;if(i<=0||i>sq->length+1){printf("---位置不合法---!\n");return 0;}if(sq->length>=sq->listsize){int* newbase=(int *)realloc(sq->elem,(sq->listsize+LISTINCREMENT)*sizeof(int)); if(!newbase){printf("申请空间溢出\n");return 0;}sq->elem=newbase;sq->listsize+=LISTINCREMENT;}p=&(sq->elem[i-1]);//p指向第i位置的元素q=&(sq->elem[sq->length-1]);//q指向最后一个元素for(;q>=p;--q) *(q+1)=*q;*p=a;++sq->length;return 1;}int ListDelete_Sq(SqList *sq,int i) //删除i位置上的值{int *p,*q;if(i<1||i>sq->length) return 0;p=&(sq->elem[i-1]);//p指向第i位置的元素q=sq->elem+sq->length-1;//q指向最后一个元素for(++p;p<=q;++p){*(p-1)=*p;}--sq->length;return 1;}void visit(SqList *sq)//输出数据{int i=1;for(;i<=sq->length;i++){int *p;p=&sq->elem[i-1];printf("%d",*p);printf(" ");}}void main(){int i=1,a=0,boo=1,number=0;SqList s,*sq;sq=&s;InitList_Sq(sq);printf("初始化空表\n");printf("输入数据个数:\n");scanf("%d",&number);printf("输入%d个数据:",number);printf("\n");for(;i<=number;i++){scanf("%d",&a);if(boo=ListInsert_Sq(sq,i,a)){printf("---插入成功!---\n");}else{printf("---插入不成功,重新插入---!\n"); i=i-1;}}printf("输出所有元素\n");visit(sq);printf("\n");printf("输出删除的位置:");scanf("%d",&a);if(boo=ListDelete_Sq(sq,a)){printf("---数据删除成功!---\n");}else{printf("---没有删除成功---\n");}printf("输出所有元素:\n");visit(sq);printf("\n");printf("输出要显示数据的位置:");scanf("%d",&a);printf("输出%d位置数值\n",a);if(a<0||a>sq->length){printf("---输出位置的数据不存在---\n");}else{GetElem(sq,a);}}步骤:1.初始化空表2.顺序插入数据后输出所有元素3.选择删除位置,删除数据后输出所有元素4.选择查看的数据位置,输出选择查看的数据四:实验结果及分析分析:本程序在实现顺序存储插入以及删除i个元素开始的k个元素删除(数据类型为整型)。
数据结构与算法实验报告
![数据结构与算法实验报告](https://img.taocdn.com/s3/m/5586a6153c1ec5da50e270d5.png)
竭诚为您提供优质文档/双击可除数据结构与算法实验报告篇一:数据结构与算法实验报告-图沈阳工程学院学生实验报告(课程名称:数据结构与算法)实验题目:班级网络本112学号27姓名郑乐乐地点F606指导教师吕海华祝世东实验日期:20XX年11月13日1234篇二:《数据结构与算法》实验报告模板软件工程系实验报告封面课程名称:数据结构与算法课程代码:ss1005实验指导老师:钟迅科实验报告名称:本实验报告包括以下几个内容:一、实验(实践)目的二、实验(实践)环境三、实验(实践)实现过程四、实验(实践)分析与总结五、指导教师评语与评分我申明,本报告内的实验已按要求完成,报告完全是由我个人完成,并没有抄袭行为。
我已经保留了这份实验报告的副本。
申明人(签名):学生姓名:张三学号:1140888888教学班:FJ01递交日期:20XX年10月11日篇三:数据结构与算法实验报告c++版算法与数据结构实验报告实验一:栈与队列一、实验目的1、掌握栈和队列特点、逻辑结构和存储结构2、熟悉对栈和队列的一些基本操作和具体的函数定义。
3、利用栈和队列的基本操作完成一定功能的程序。
二、实验任务1.出顺序栈的类定义和函数实现,利用栈的基本操作完成十进制数n与其它d进制数的转换。
(如n=1357,d=8)2.给出顺序队列的类定义和函数实现,并利用队列计算并打印杨辉三角的前n行的内容。
(n=8)3.给出链栈的类定义和函数实现,并设计程序完成如下功能:读入一个有限大小的整数n,并读入n个数,然后按照与输入次序相反的次序输出各元素的值。
三、实验原理1、将十进制数n转化为d进制时,用除去余数法,用d 除n所得余数作为d进制当前个位,将相除所得的商的整数部分作为新的n值重复上述计算,直到n为0为止。
将前所得到的各余数反过来连接便得到最终结果。
将每次求出的余数入栈,求解结束后,再依次出栈。
2、在杨辉三角中可用上一行的数来求出对应位置的下一行的内容。
数据结构与算法实验报告(线性表)
![数据结构与算法实验报告(线性表)](https://img.taocdn.com/s3/m/61102ff40875f46527d3240c844769eae009a3cf.png)
一、实验目的1、深刻理解线性结构的特点以及线性表的概念。
2、熟练掌握线性表的顺序存储结构、链式存储结构及基本运算算法的实现,特别是查找、插入和删除等算法。
二、实验环境1) 硬件:每个学生需配备计算机一台,操作系统:Windows2000/XP。
2) 软件:visual c++6.0。
三、实验题目和实验内容实验题目:线性表的顺序、链式表示及其应用实验内容:1、基本题:实验2.1、实验2.2、实验2. 4、实验2.72、附加题:实验2.3、实验2.6(没做)四、实验数据和实验结果2.1a,b,c,d,e2.2a,b,c,d,e22.4a,b,c,d,e2.7第一个多项式:2x+6x^2-4x^3+3x^4 第二个多项式1x-3x^2+6x^3-3x^4五、附录(程序代码)2.1#include<iostream.h>#include<malloc.h>#define MaxSize 50typedef struct{char data[MaxSize];int length;}SqList;void CreateList(SqList *&L,char a[],int n) {int i;L=(SqList *)malloc(sizeof(SqList));for(i=0;i<n;i++)L->data[i]=a[i];L->length=n;}void InitList(SqList *&L){L=(SqList *)malloc(sizeof(SqList));L->length=0;}void DestroyList(SqList *&L){free(L);}int ListEmpty(SqList *L){return (L->length==0);}int ListLength(SqList *L){return (L->length);}void DispList(SqList *L){int i;for(i=0;i<L->length;i++)cout<<L->data[i];cout<<endl;}char GetElem(SqList *L,int i,char &e){if(i<1||i>L->length)return 0;e=L->data[i-1];return e;}第3 页共15 页int LocateElem(SqList *L,char e){int i=0;while(i<L->length&&L->data[i]!=e) i++;if(i>=L->length)return 0;elsereturn i+1;}int ListInsert(SqList*&L,int i,char e) {int j;if(i<1||i>L->length+1)return 0;i--;for(j=L->length;j>i;j--)L->data[j]=L->data[j-1];L->data[i]=e;L->length++;return 1;}int ListDelete(SqList *&L,int i,char &e) {int j;if(i<1||i>L->length)return 0;i--;e=L->data[i];for(j=i;j<L->length-1;j++)L->length--;return 1;}void main (){SqList *p;char b[10],e;int k;cout<<"元素个数:";cin>>k;cout<<"输入元素:";for(int m=0;m<k;m++)cin>>b[m];InitList(p);4CreateList(p,b,k);cout<<"输出顺序表:";DispList(p);cout<<"顺序表长度是:"<<ListLength(p)<<endl;if(ListEmpty(p))cout<<"顺序表为空"<<endl;elsecout<<"顺序表不为空"<<endl;cout<<"顺序表第3位元素是:"<<GetElem(p,3,e)<<endl;cout<<"元素a的位置是:第"<<LocateElem(p,'a')<<"位"<<endl;ListInsert(p,4,'f');cout<<"在第4个元素上插入元素f:";DispList(p);cout<<"删除顺序表第3个元素:";ListDelete(p,3,e);DispList(p);DestroyList(p);}2.2#include<iostream.h>#include<malloc.h>typedef struct LNode{char data;struct LNode *next;}LinkList;void CreateListR(LinkList *&L,char a[],int n){LinkList *s,*r;int i;L=(LinkList *)malloc(sizeof(LinkList));r=L;for(i=0;i<n;i++){s=(LinkList *)malloc(sizeof(LinkList));s->data=a[i];r->next=s;r=s;}r->next=NULL;}第5 页共15 页void InitList(LinkList *&L){L=(LinkList *)malloc(sizeof(LinkList));L->next=NULL;}void DestroyList(LinkList *&L){LinkList *pre=L,*p=pre->next;while(p){free(pre);pre=p;p=pre->next;}free(pre);}int ListEmpty(LinkList *L){return(L->next==NULL);}int ListLength(LinkList *L){int n=0;LinkList *p=L;while(p->next){n++;p=p->next;}return(n);}void DispList(LinkList *L){LinkList *p=L->next;while(p){cout<<p->data;p=p->next;}cout<<endl;}char GetElem(LinkList *L,int i,char &e) {int j=0;6LinkList *p=L;while(j<i&&p!=NULL){j++;p=p->next;}if(!p)return 0;else{e=p->data;return e;}}int LocateElem(LinkList *L,char e){int i=1;LinkList *p=L->next;while(p&&p->data!=e){p=p->next;i++;}if(!p)return(0);elsereturn(i);}int ListInsert(LinkList *&L,int i,char e){int j=0;LinkList *p=L,*s;while(j<i-1&&p){j++;p=p->next;}if(!p)return 0;else{s=(LinkList *)malloc(sizeof(LinkList));s->data=e;s->next=p->next;第7 页共15 页p->next=s;return 1;}}int ListDelete(LinkList *&L,int i,char &e){int j=0;LinkList *p=L,*q;while(j<i-1&&p){j++;p=p->next;}if(!p)return 0;else{q=p->next;if(!q)return 0;e=q->data;p->next=q->next;free(q);return 1;}}void main(){LinkList *h;char b[10],e;int k;cout<<"元素个数:";cin>>k;cout<<"输入元素:";for(int m=0;m<k;m++)cin>>b[m];InitList(h);CreateListR(h,b,k);cout<<"输出单链表:";DispList(h);cout<<"单链表长度是:"<<ListLength(h)<<endl;if(ListEmpty(h))cout<<"单链表为空"<<endl;else8cout<<"单链表不为空"<<endl;cout<<"单链表第3位元素是:"<<GetElem(h,3,e)<<endl;cout<<"元素a的位置是:第"<<LocateElem(h,'a')<<"位"<<endl;ListInsert(h,4,'f');cout<<"在第4个元素上插入元素f:";DispList(h);cout<<"删除单链表第3个元素:";ListDelete(h,3,e);DispList(h);DestroyList(h);}2.4#include<iostream.h>#include<malloc.h>typedef struct LNode{char data;struct LNode *next;}LinkList;void CreateListR(LinkList *&L,char a[],int n){LinkList *s,*r;int i;L=(LinkList *)malloc(sizeof(LinkList));r=L;for(i=0;i<n;i++){s=(LinkList *)malloc(sizeof(LinkList));s->data=a[i];r->next=s;r=s;}r->next=L;}void InitList(LinkList *&L){L=(LinkList *)malloc(sizeof(LinkList));L->next=NULL;}void DestroyList(LinkList *&L){第9 页共15 页LinkList *pre=L->next,*p=pre->next;L->next=NULL;while(p){free(pre);pre=p;p=pre->next;}free(pre);}int ListEmpty(LinkList *L){return(L->next==NULL);}int ListLength(LinkList *L){int n=0;LinkList *p=L;while(p->next!=L&&p->next){n++;p=p->next;}return(n);}void DispList(LinkList *L){LinkList *p=L->next;while(p!=L&&p){cout<<p->data;p=p->next;}cout<<endl;}char GetElem(LinkList *L,int i,char &e) {int j=1;LinkList *p=L->next;while(j<i&&p!=L&&p){j++;p=p->next;}10return 0;else{e=p->data;return e;}}int LocateElem(LinkList *L,char e){int i=1;LinkList *p=L->next;while(p!=L&&p->data!=e&&p){p=p->next;i++;}if(!p)return(0);elsereturn(i);}int ListInsert(LinkList *&L,int i,char e){int j=1;LinkList *p=L->next,*s;while(j<i-1&&p&&p!=L){j++;p=p->next;}if(!p)return 0;else{s=(LinkList *)malloc(sizeof(LinkList));s->data=e;s->next=p->next;p->next=s;return 1;}}int ListDelete(LinkList *&L,int i,char &e) {第11 页共15 页LinkList *p=L->next,*q;while(j<i-1&&p&&p!=L){j++;p=p->next;}if(!p)return 0;else{q=p->next;if(!q||q==L->next)return 0;e=q->data;p->next=q->next;free(q);return 1;}}void main(){LinkList *h;char b[10],e;int k;cout<<"元素个数:";cin>>k;cout<<"输入元素:";for(int m=0;m<k;m++)cin>>b[m];InitList(h);CreateListR(h,b,k);cout<<"输出循环单链表:";DispList(h);cout<<"循环单链表长度是:"<<ListLength(h)<<endl;if(ListEmpty(h))cout<<"循环单链表为空"<<endl;elsecout<<"循环单链表不为空"<<endl;cout<<"循环单链表第3位元素是:"<<GetElem(h,3,e)<<endl;cout<<"元素a的位置是:第"<<LocateElem(h,'a')<<"位"<<endl;ListInsert(h,4,'f');cout<<"在第4个元素上插入元素f:";DispList(h);12cout<<"删除循环单链表第3个元素:";ListDelete(h,3,e);DispList(h);DestroyList(h);}2.7#include<iostream.h>#include<malloc.h>typedef struct polynomial{int coef; //系数int index; //指数struct polynomial *next;}LinkList;void CreateList(LinkList *&L, int n){LinkList *s,*r;int i;L=(LinkList *)malloc(sizeof(LinkList));r=L;for(i=0;i<n;i++){s=(LinkList*)malloc(sizeof(LinkList));cout<<"依次输入多项式系数和指数:";cin>>s->coef>>s->index;s->next = NULL;r->next=s;r=s;}}void InitList(LinkList *&L){L=(LinkList *)malloc(sizeof(LinkList));L->next=NULL;}void AddList(LinkList *&list1,LinkList *&list2,int m,int n) {LinkList *s,*r,*t;int i;s=list1->next;r=list2->next;t=list1;第13 页共15 页for(i=0;i<n;i++){if(s==NULL){s=list1->next;t=list1;}while(s!=NULL){if(s->index!=r->index){s=s->next;t=t->next;}else break;}if(!s){s=(LinkList*)malloc(sizeof(LinkList));s->coef=r->coef;s->index=r->index;s->next=NULL;t->next=s;s=s->next;r=r->next;continue;}else{if(s->index==r->index)s->coef=s->coef+r->coef;if(s->coef==0){LinkList *temp1;temp1=s;s=s->next;t->next=s;delete temp1;}}r=r->next;s=NULL;}cout<<"多项式相加的结果是:";14list1=list1->next;while(list1){cout<<list1->coef<<"x^"<<list1->index;if(list1->next!=NULL)cout<<"+";list1=list1->next;}}void DispList(LinkList *L){L=L->next;while(L){cout<<L->coef<<"x^"<<L->index;if(L->next!=NULL)if(L->next->coef>0)cout<<"+";L=L->next;}}void main(){LinkList *list1,*list2;InitList(list1);InitList(list2);int m,n;cout<<"请输入第一个多项式的项数:";cin>>m;CreateList(list1,m);cout<<"多项式表示是:";DispList(list1);cout<<endl;cout<<"请输入第二个多项式的项数:";cin>>n;CreateList(list2,n);cout<<"多项式表示是:";DispList(list2);cout<<endl;AddList(list1,list2,m,n);cout<<endl;}第15 页共15 页。
算法与及数据结构实验报告
![算法与及数据结构实验报告](https://img.taocdn.com/s3/m/9c3e5fc73c1ec5da50e270c0.png)
第一学期实验报告课程名称:算法与数据结构实验名称:城市链表一、实验目的本次实验的主要目的在于熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉各种链表的操作为侧重点。
同时,通过本次实验帮助学生复习高级语言的使用方法。
二、实验内容(一)城市链表:将若干城市的信息,存入一个带头结点的单链表。
结点中的城市信息包括:城市名,城市的位置坐标。
要求能够利用城市名和位置坐标进行有关查找、插入、删除、更新等操作。
(二) 约瑟夫环m 的初值为20;密码:3,1,7,2,6,8,4(正确的结果应为6,1,4,7,2,3,5)。
三、实验环境VS2010 、win8.1四、实验结果(一)城市链表:(1)创建城市链表;(2)给定一个城市名,返回其位置坐标;(3)给定一个位置坐标P 和一个距离D,返回所有与P 的距离小于等于D 的城市。
(4)在已有的城市链表中插入一个新的城市;(5)更新城市信息;(6)删除某个城市信息。
(二) 约瑟夫环m 的初值为20;密码:3,1,7,2,6,8,4输出6,1,4,7,2,3,5。
五、附录城市链表:5.1 问题分析该实验要求对链表实现创建,遍历,插入,删除,查询等操作,故使用单链表。
5.2 设计方案该程序大致分为以下几个模块:1.创建城市链表模块,即在空链表中插入新元素。
故创建城市链表中包涵插入模块。
2.返回位置坐标模块。
3.计算距离模块4.插入模块。
5.更新城市信息模块6.删除信息模块。
5.3 算法5.3.1 根据中心城市坐标,返回在距离内的所有城市:void FindCityDistance(citylist *L){//根据距离输出城市……//输入信息与距离L=L->next;while(L != NULL){if(((L->x-x1)*(L->x-x1)+(L->y-y1)*(L->y-y1)<=dis *dis)&&(((L->x-x1)+(L->y-y1))!=0 )){printf("城市名称%s\n",L->Name);printf("城市坐标%.2lf,%.2lf\n",L->x,L->y);}L=L->next;}}该算法主要用到了勾股定理,考虑到不需要实际数值,只需要大小比较,所以只用横坐标差的平方+纵坐标差的平方<= 距离的平方判定。
算法与及数据结构实验报告
![算法与及数据结构实验报告](https://img.taocdn.com/s3/m/db296e484531b90d6c85ec3a87c24028915f85dc.png)
算法与及数据结构实验报告算法与数据结构实验报告一、实验目的本次算法与数据结构实验的主要目的是通过实际操作和编程实现,深入理解和掌握常见算法和数据结构的基本原理、特性和应用,提高我们解决实际问题的能力和编程技巧。
二、实验环境本次实验使用的编程语言为 Python,开发环境为 PyCharm。
同时,为了进行算法性能的分析和比较,使用了 Python 的 time 模块来计算程序的运行时间。
三、实验内容1、线性表的实现与操作顺序表的实现:使用数组来实现顺序表,并实现了插入、删除、查找等基本操作。
链表的实现:通过创建节点类来实现链表,包括单向链表和双向链表,并完成了相应的操作。
2、栈和队列的应用栈的实现与应用:用数组或链表实现栈结构,解决了表达式求值、括号匹配等问题。
队列的实现与应用:实现了顺序队列和循环队列,用于模拟排队系统等场景。
3、树结构的探索二叉树的创建与遍历:实现了二叉树的先序、中序和后序遍历算法,并对其时间复杂度进行了分析。
二叉搜索树的操作:构建二叉搜索树,实现了插入、删除、查找等操作。
4、图的表示与遍历邻接矩阵和邻接表表示图:分别用邻接矩阵和邻接表来存储图的结构,并对两种表示方法的优缺点进行了比较。
图的深度优先遍历和广度优先遍历:实现了两种遍历算法,并应用于解决路径查找等问题。
5、排序算法的比较插入排序、冒泡排序、选择排序:实现了这三种简单排序算法,并对不同规模的数据进行排序,比较它们的性能。
快速排序、归并排序:深入理解并实现了这两种高效的排序算法,通过实验分析其在不同情况下的表现。
6、查找算法的实践顺序查找、二分查找:实现了这两种基本的查找算法,并比较它们在有序和无序数据中的查找效率。
四、实验步骤及结果分析1、线性表的实现与操作顺序表:在实现顺序表的插入操作时,如果插入位置在表的末尾或中间,需要移动后续元素以腾出空间。
删除操作同理,需要移动被删除元素后面的元素。
在查找操作中,通过遍历数组即可完成。
数据结构与算法-实验报告模板
![数据结构与算法-实验报告模板](https://img.taocdn.com/s3/m/17030ec228ea81c758f5789a.png)
2.实验内容
(参考实验说明)
3.程序框图
(程序流程图,可以使用visio,word等画图工具)
4.运行结果
(描述运行结果,并将运行结果进行屏幕截图)
5.实验体会
(包括调试过程中发现的问题及解决方法)
注:(1)封面单面打印,其它页双面打印
(2)正文字体:五号字,中文-宋体,西文-Times New Roman
北京工业大学
2016-2017学年 第1学期
信息学部软件学院
课程名称:
数据结构与算法I
报告性
任课教师:
宿浩茹
课程性质:
学科基础必修
学分:
4
学时:
64
班级:
成绩:
小组成员:
教师评语:
2016年 月 日
报告题目:(实验说明中的标题,如实验一为:线性表操作)
1.实验目的
(3)字数不限
数据结构与算法的实验报告
![数据结构与算法的实验报告](https://img.taocdn.com/s3/m/45031a5d26284b73f242336c1eb91a37f111321b.png)
数据结构与算法的实验报告数据结构与算法第二次实验报告电子105班赵萌2010021526实验二:栈和队列的定义及基本操作一、实验目的:. 熟练掌握栈和队列的特点. 掌握栈的定义和基本操作,熟练掌握顺序栈的操作及应用. 掌握对列的定义和基本操作,熟练掌握链式队列的操作及应用, 掌握环形队列的入队和出队等基本操作. 加深对栈结构和队列结构的理解,逐步培养解决实际问题的编程能力二、实验内容:定义顺序栈,完成栈的基本操作:空栈、入栈、出栈、取栈顶元素;实现十进制数与八进制数的转换;定义链式队列,完成队列的基本操作:入队和出队;1.问题描述:(1)利用栈的顺序存储结构,设计一组输入数据(假定为一组整数),能够对顺序栈进行如下操作:. 初始化一个空栈,分配一段连续的存储空间,且设定好栈顶和栈底;. 完成一个元素的入栈操作,修改栈顶指针;. 完成一个元素的出栈操作,修改栈顶指针;. 读取栈顶指针所指向的元素的值;. 将十进制数N 和其它d 进制数的转换是计算机实现计算的基本问题,其解决方案很多,其中最简单方法基于下列原理:即除d 取余法。
例如:(1348)10=(2504)8N N div 8 N mod 81348 168 4168 21 021 2 52 0 2从中我们可以看出,最先产生的余数4 是转换结果的最低位,这正好符合栈的特性即后进先出的特性。
所以可以用顺序栈来模拟这个过程。
以此来实现十进制数与八进制数的转换; . 编写主程序,实现对各不同的算法调用。
(2)利用队列的链式存储结构,设计一组输入数据(假定为一组整数),能够对链式队列进行如下操作:. 初始化一个空队列,形成一个带表头结点的空队;. 完成一个元素的入队操作,修改队尾指针;. 完成一个元素的出队操作,修改队头指针;. 修改主程序,实现对各不同的算法调用。
其他算法的描述省略,参见实现要求说明。
2.实现要求:对顺序栈的各项操作一定要编写成为C(C++)语言函数,组合成模块化的形式,每个算法的实现要从时间复杂度和空间复杂度上进行评价。
合肥工业大学数据结构与算法试验报告2
![合肥工业大学数据结构与算法试验报告2](https://img.taocdn.com/s3/m/d39515ce89eb172ded63b7cc.png)
数据结构实验报告实验二单链表实验1.实验目标(1)熟练掌握线性表的链式存储结构。
(2)熟练掌握单链表的有关算法设计。
(3)根据具体问题的需要,设计出合理的表示数据的顺序结构,并设计相关算法。
2.实验内容和要求(1)本次实验中的链表结构指带头结点的单链表;(2)单链表结构和运算定义,算法的实现以库文件方式实现,不得在测试主程序中直接实现;(3)实验程序有较好可读性,各运算和变量的命名直观易懂,符合软件工程要求;(4)程序有适当的注释。
3.数据结构设计(1)以结构体,类为基础,和函数调用实现各实验;4.算法设计(除书上给出的基本运算(这部分不必给出设计思想),其它实验内容要给出算法设计思想)5.运行和测试(1)各个实验运行正常,符合实验要求;(2)达到实验目的。
6.总结和心得[7. 附录](源代码清单。
纸质报告不做要求。
电子报告,可直接附源文件,删除编译生成的所有文件)<1>尾插法创建单链表,打印创建结果。
题1.cpp<2>头插法创建单链表,打印创建结果。
题2.cpp<3>销毁单链表。
题3.cpp<4>求链表长度。
题4.cpp<5>求单链表中第i个元素(函数),若不存在,报错。
题5.cpp<6>在第i个结点前插入值为x的结点。
题6.cpp<7>链表中查找元素值为x的结点,成功返回结点指针,失败报错。
题7.cpp<8>删除单链表中第i个元素结点。
题8.cpp<9>在一个递增有序的单链表L中插入一个值为x的元素,并保持其递增有序特性。
题9.cpp<10>将单链表L中的奇数项和偶数项结点分解开(元素值为奇数、偶数),分别放入新的单链表中,然后原表和新表元素同时输出到屏幕上,以便对照求解结果。
题10.cpp<11>求两个递增有序单链表L1和L2中的公共元素,放入新的单链表L3中。
数据结构与算法实习报告
![数据结构与算法实习报告](https://img.taocdn.com/s3/m/f0e6bcbe68dc5022aaea998fcc22bcd126ff427b.png)
实习报告这个题目就是要根据一个中序遍历和一个构树的规则构造一棵BST,我采用的算法是o(nlogn) + o(n)的算法,其中o(nlogn)是指将label按照从小到大的顺序排列,我用到了库函数的快速排序。
而o(n)是指将结点构造成一个BST。
下面的内容分为两个方面,一是构造二叉树的算法分析,二是代码的优化。
一、o(n)的建树方法首先确定我们从题目中知道的信息,即二叉树结点的个数,以及每个结点的描述,题目要求我们建立一棵BST,其中BST又满足heap的性质,即父亲结点的priority必须大于它的子结点的priority值,输出按照二叉树的中序遍历形式。
显然这道题不可能用我们常规的建树方法,即建BST或heap的常规方法,由于结点有50000,所以我们建树的算法必须为o(nlogn) 或者o(n)。
首先我们将结点按照label排序,这样排好序的序列就是我们要构造的BST的中序遍历。
然后我们根据中序遍历建树。
从中序遍历中的第一个结点到最后一个结点,逐一加入我们构造的树中,第一个结点可以独立构成一棵满足条件的树。
按照中序遍历的定义,第二个结点可以是第一个结点的父亲结点(其左儿子为第一个结点)或者是第一个结点的右儿子,然后又可以根据两个结点的priority确定到底是放在那里。
加入第三个结点也是这样操作的,首先根据中序遍历的定义确定它可以放的位置,然后再根据heap的性质确定到底是放在哪个位置。
依此类推,当加入第I + 1个结点时,我们知道,前面I个结点已经构造成了一棵满足条件的BST,由中序遍历的定义,可知第I个结点肯定在已经构造的树的最右边,且没有右儿子。
对于第I + 1个结点,它可以放的方式有两种,一是作为整棵已经构造好的树的根,其中前面构造好的树为它的左子树,二是从已构造好的BST的根结点到它的最右边的那个结点,有一条“斜线”,如图所示:i由于新加入的结点要使新构造成的二叉树满足中序遍历,那么第I+1 个结点,可以作为这条“斜线”上任一个结点temp的右儿子,然后原来temp的右子树作为它的左子树,这样树中已经加入的I +1 个结点就仍然满足中序遍历的条件。
数据结构与算法实训课程实训报告
![数据结构与算法实训课程实训报告](https://img.taocdn.com/s3/m/40a27e8402d276a200292e93.png)
XXXX学院课程实训报告课程名:数据结构与算法实训学号:姓名:班级:指导老师:时间:1.设计任务、要求及所用软件环境(1)设计任务:成绩管理:设计一个程序进行学生成绩管理。
假设对某个班的学生5门课程的学习成绩进行管理,实现以下功能:(1)求每门课程的平均成绩;(2)输出每门课程成绩优秀(>=90分)的学生名单及成绩;(3)输出只有一门课程不及格的学生名单及每门成绩;(4)对5门课程中可以按照任一门课程的成绩进行排序。
(2)设计要求:1)学生成绩采用链表存储方式;2)学生人数和学生的成绩从键盘输入;3)排序方法可以任选一种。
(3)所用软件环境:Microsoft Visual C++ 6.0 (二级C语言专用版)2.问题的模型化描述以及求解问题的算法简要描述通过开发一个学生成绩管理信息系统,掌握与数组有关的算法、函数的调用、结构体类型变量的定义和使用,提高实际运用能力。
开始进入登录界面,根据输入的操作选项,可分别进行各项操作:可完成学生成绩信息的输入,求平均成绩,查询每门课程成绩优秀(>=90分)的学生名单及成绩,查询只有一门课程不及格的学生名单及每门成绩,对5门课程中可以按照任一门课程的成绩进行排序等功能。
3.所选择的存储结构及基本运算、设计的模块构成、各模块的简要说明、流程图、调用关系表。
用Microsoft Visual C++ 6.0 (二级C语言专用版)编写,完成学生成绩的链表存储,任意学生成绩的插入、查询、排序。
(1)输入形式和输入范围:建立成绩管理时,需要指定元素个数和每个元素的值,然后按元素的顺序建立一个链式成绩管理系统;排序时,需要确定排序方法;查找操作时需要元素的范围;在所有输入中,元素的值都是整数。
(2)输出的形式:在所有操作中都显示操作是否正确以及操作后链表的内容。
设计的模块构成:4.程序组成基本操作及流程图:(1)结构图:(2)函数average()的流程图:(3)函数Excellent()的流程图:所设计软件的组成(程序文件)及使用说明。
《数据结构和算法设计》实验报告
![《数据结构和算法设计》实验报告](https://img.taocdn.com/s3/m/ba254f02f46527d3250ce044.png)
《数据结构与算法设计》实验报告——实验二一、实验目的按照四则运算加、减、乘、除、幂(^)和括号的优先关系和惯例,编写计算器程序。
二、实验内容简单计算器。
请按照四则运算加、减、乘、除、幂(^)和括号的优先关系和惯例,编写计算器程序。
要求:①从键盘输入一个完整的表达式,以回车作为表达式输入结束的标志。
②输入表达式中的数值均为大于等于零的整数。
中间的计算过程如果出现小数也只取整。
例如,输入:4+2*5= 输出:14输入:(4+2)*(2-10)= 输出:-48三、程序设计概要设计1、宏定义#define TRUE 1#define FALSE 0#define OK 1#define ERROR 02、基本函数:(1)void InitStack_char(SqStack *S) //char型栈初始化(2)void InitStack_int(sqStack *S) //int型栈初始化(3)void Push_char(SqStack *S,char ch) //char型元素进栈(4)void Push_int(sqStack *S,int num) //int型元素进栈(5)char GetTop_char(SqStack *S) //取char型栈顶元素(6)int GetTop_int(sqStack *S) //取int型栈顶元素(7)Status In(char c) //判断是否为运算符,若是运算符则返回,否则返回(8)char Precede(char a,char b) //判断两运算符的先后次序(9)Status Pop_char(SqStack *S,char &x) //char型栈出栈(10)Status Pop_int(sqStack *S,int &x) //int型栈出栈(11)int Operate(int a,char theta,int b) //计算a和b运算结果3、流程图详细设计数据类型typedef struct node //构造char型栈{char ch;struct node *next;}node;typedef struct{struct node *base;struct node *top;}SqStack;typedef struct lnode //构造int型栈{int num;struct lnode *next;}lnode;typedef struct{struct lnode *base;struct lnode *top;}sqStack;操作部分void InitStack_char(SqStack *S){S->base = (node *)malloc(sizeof(node));S->base->next=NULL;S->top = S->base;} //char型栈初始化void InitStack_int(sqStack *S){S->base = (lnode *)malloc(sizeof(lnode));S->base->next=NULL;S->top = S->base;} //int型栈初始化void Push_char(SqStack *S,char ch){node *p;p=(node*)malloc(sizeof(node));p->ch=ch;p->next=S->top;S->top=p;} //char型元素进栈Status Push_int(sqStack *S,int num){lnode *p;p=(lnode*)malloc(sizeof(lnode));p->num=num;p->next=S->top;S->top=p;return OK;} //int型元素进栈char GetTop_char(SqStack *S){return (S->top->ch);} //取char型栈顶元素int GetTop_int(sqStack *S){return (S->top->num);} //取int型栈顶元素Status Pop_char(SqStack *S,char &x){if(S->base == S->top)return ERROR;node *p;p=S->top;x=p->ch;S->top=p->next;free(p);return OK;} //char型栈出栈Status Pop_int(sqStack *S,int &x){if(S->base == S->top)return ERROR;lnode *p;p=S->top;x=p->num;S->top=p->next;free(p);return OK;} //int型栈出栈计算功能int Operate(int a,char theta,int b){int i,z = 1;switch(theta){case '+':z = (a + b);break;case '-':z = (a - b);break;case '*':z = (a * b);break;case '/':z = (a / b);break;case '^':for(i = 1;i<=b;i++)z = z*a;break;}return (z);} //计算a和b运算结果Status In(char c){if(c=='+'||c=='-'||c=='*'||c=='/'||c=='('||c==')'||c=='='||c=='^') return OK;elsereturn ERROR;} //判断是否为运算符char Precede(char a,char b){if(a=='+'||a=='-'){if(b=='+'||b=='-'||b==')'||b=='=')return '>';elsereturn '<';}if(a=='*'||a=='/'){if(b=='('||b=='^')return '<';elsereturn '>';}if(a=='('){if(b==')')return '=';elsereturn '<';}if(a==')'){if(b!='(')return '>';}if(a=='#'){if(b=='=')return '=';elsereturn '<';}if(a=='^')return ('>');} //判断两运算符的先后次序主函数int main() //主函数{char c,x,theta;int a,b,c1; //定义变量SqStack OPTR; //定义字符栈sqStack OPNR; //定义整型栈InitStack_char(&OPTR); //初始化InitStack_int(&OPNR); //初始化Push_char(&OPTR,'#'); //将字符型栈底设为#c = getchar(); //从键盘输入得到字符while(c!='='||GetTop_char(&OPTR)!='#') //判定是否执行循环if(!In(c)){c1 = 0;while(!In(c)){c1 = c1*10+c-'0';c = getchar();}Push_int(&OPNR,c1);} //当扫描字符不是运算符时,转化为整型数存入栈中else{switch(Precede(GetTop_char(&OPTR),c)) //判定运算符的优先关系{case '<':Push_char(&OPTR,c);c = getchar();break; //当前运算符优先级高,存入char栈case '=':Pop_char(&OPTR,c);c = getchar();break; //运算符次序相等,存入char栈case '>': //当前运算符优先级低Pop_char(&OPTR,theta);Pop_int(&OPNR,b);Pop_int(&OPNR,a);Push_int(&OPNR, Operate(a,theta,b));//计算运算结果,并存入int栈break; //继续循环}}printf("%d\n",GetTop_int(&OPNR)); //计算完成,取出int栈顶元素,并输出return 0;}四、程序调试分析编写程序的过程中遇到了很多的问题,最突出的两个问题就是整数和两位数的运算处理,一开始修改了主函数部分之后,原来可以执行一位数运算的程序出现了error,由于没有及时保存,并且之前的代码无法恢复,只得重新编写一次。
中北大学 算法与数据结构实验报告
![中北大学 算法与数据结构实验报告](https://img.taocdn.com/s3/m/4e6359fbf8c75fbfc77db291.png)
for(i=n;i>0;--i)
{
p=(LinkList)malloc(sizeof(LNode));
cin>>p->data;
p->next=L->next;
L->next=p;
}
}
int GetElem_L(LinkList L,int i,int &e) //GetElem_L() function
# define ERROR 0
typedef struct LNode//define LNode structure
{int data;
struct LNode *next;
}LNode,*Linklist;
int ListInsert_L(Linklist &L,int i,int e)
{//在带头结点的单链线性表L中第i个位置之前插入元素e
L=node;
L=(Linklist)malloc(sizeof(LNode));
L->next=NULL;
for (i=10;i>0;i--)
{p=(Linklist)malloc(sizeof(LNode));
p->data=array[i-1];
p->next=L->next;
cout<<"OK...!"<<endl;
getch();
}//end of main() function
4、实现单向线性链表取元素
#include <stdlib.h>
#include <iostream.h>
数据结构与算法课内实验实验报告
![数据结构与算法课内实验实验报告](https://img.taocdn.com/s3/m/3c4e036afab069dc502201b5.png)
(三)内容提要:
1、数据采集
本次实验,每位同学对自己采集到的数据进行处理。数据采集的要求如下:
1)采集时间:(1)11.15~11.16(数据结构专题实验第4次实验);
(2)11.24(第11周周末);
(3)第5次数据结构专题实验时间;
2)对于每段移动,计算平均速度在m个样本上的速度平均值,16段移动可以得到16个速度平均值,对这16个速度平均值进行排序,给出最大和最小速度对应的段ID和平均速度。
3)对于每段移动,计算移动持续时间在m个样本上的移动持续时间平均值,16段移动可以得到16个移动持续时间平均值,对这16个移动持续时间平均值进行排序,给出最长和最短移动持续时间对应的段ID和移动持续时间。
Record record[16]; //文件中的十六段记录
}Sample;
typedef struct Data //读取原始数据时的中间存储结构
{
int x; //x坐标
int y; //y坐标
int time; //时间戳
int type; //操作类型
}Data;
typedef struct Result //统计结果的存储结构
(4)课内实验验收时间待定
2)采集地点:西一楼307;
3)采集时长:每位同学5~10分钟;
4)采集内容:每位同学认真完成指定的鼠标操作,包括鼠标的移动、鼠标单击和鼠标双击(见下述提示1)。
2、数据处理
采集到的数据会以文本的形式保存,一个文本文件称为一个样本。每位同学需要m个样本完成实验。读取文本文件并对数据进行如下操作:
2、文件的基本操作。文件的打开及读取数据,写入数据等。
大学数据结构实验报告模板
![大学数据结构实验报告模板](https://img.taocdn.com/s3/m/a6bd657f4a35eefdc8d376eeaeaad1f346931196.png)
大学数据结构实验报告模板一、实验目的数据结构实验是计算机相关专业课程中的重要实践环节,通过实验可以加深对数据结构理论知识的理解,提高编程能力和解决实际问题的能力。
本次实验的主要目的包括:1、掌握常见数据结构(如数组、链表、栈、队列、树、图等)的基本操作和实现方法。
2、学会运用数据结构解决实际问题,培养算法设计和分析能力。
3、提高程序设计的规范性和代码质量,培养良好的编程习惯。
4、熟悉编程语言(如C、C++、Java 等)的开发环境和调试技巧。
二、实验环境1、操作系统:_____2、编程语言:_____3、开发工具:_____三、实验内容(一)线性表的实现与操作1、顺序表的实现定义顺序表的数据结构。
实现顺序表的初始化、插入、删除、查找等基本操作。
2、链表的实现定义链表的数据结构(单链表、双向链表或循环链表)。
实现链表的创建、遍历、插入、删除等操作。
(二)栈和队列的实现与应用1、栈的实现定义栈的数据结构。
实现栈的入栈、出栈、栈顶元素获取等操作。
利用栈解决括号匹配、表达式求值等问题。
2、队列的实现定义队列的数据结构。
实现队列的入队、出队、队头元素获取等操作。
利用队列实现广度优先搜索、任务调度等应用。
(三)树的实现与遍历1、二叉树的实现定义二叉树的数据结构(二叉链表或顺序存储)。
实现二叉树的创建、前序遍历、中序遍历、后序遍历。
2、二叉搜索树的实现实现二叉搜索树的插入、删除、查找操作。
3、平衡二叉树(如 AVL 树)的实现(选做)理解平衡二叉树的平衡调整算法。
实现平衡二叉树的插入和删除操作,并保持树的平衡。
(四)图的表示与遍历1、图的邻接矩阵和邻接表表示定义图的数据结构(邻接矩阵或邻接表)。
实现图的创建和初始化。
2、图的深度优先遍历和广度优先遍历实现图的深度优先遍历和广度优先遍历算法。
应用图的遍历解决最短路径、连通性等问题。
(五)排序算法的实现与性能比较1、常见排序算法的实现实现冒泡排序、插入排序、选择排序、快速排序、归并排序等算法。
1_数据结构与算法_实验报告(8个)-2022年2月--计算机21-5、7
![1_数据结构与算法_实验报告(8个)-2022年2月--计算机21-5、7](https://img.taocdn.com/s3/m/1fa861f49fc3d5bbfd0a79563c1ec5da50e2d6b1.png)
总体实验要求一、实验要求1)熟悉C语言的编程环境,根据实验题目编写好源程序;2)对上机操作过程中可能出现的问题预先分析,确定调试步骤和测试方法;3)输入一定数量的测试数据,对运行结果进行分性;4)上机实验完成后,认真写出实验报告,对上机中出现的问题进行分析、总结;5)上机过程中要遵守实验室的各项规章制度,爱护实验设备,保持环境卫生;6)本课程的实验过程中,不得进行游戏、上网等操作。
二、实验环境(工具、配置等)1)硬件要求:计算机一台2)软件要求:Windows操作系统,建议使用C语言,编译环境不限,如Dev-Cpp或VC++6.0或VS2010等。
3)数据结构与算法分析,实验实现的语言不限,建议使用C或者C++语言。
三、实验过程(实验方案、实验步骤、设计思路等)1)实验方案:将编好的代码上机进行检验,看是否与预期一样。
2)实验步骤:在书上或网上找到相关算法,进行修改,上机检验,纠错。
3)设计思路:先根据实验题目定义数据结构,并将所需函数实现,最后书写主函数中调用函数,检查结果是否正确?实验一顺序表的建立及应用一、实验目的1)熟悉集成开发环境2)深入了解线性表的顺序存储结构3)在顺序存储结构上进行插入、删除等操作4)利用顺序表解决实际应用问题二、实验题目【实验题目1】通过线性表结构实现电话本模拟程序。
编程实现顺序存储结构中的基本操作的实现(电话本的建立、插入、删除、修改、逆置、查找、输出),并设计一个主菜单完成各个功能的调用。
注意:认真阅读和掌握本实验的参考程序,上机运行本程序,保存程序的运行结果,并结合程序进行分析。
三、源程序#include<stdio.h>using namespace std;四、实验结果(截图)五、实验分析:1.遇到的问题:1)2)2.解决的方法:1)2)3.收获:4.实验体会及想对老师说的话实验二单链表的实现及其应用一、实验目的1)深入了解单链表的存储结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构与算法》
实验报告
班级:
学生学号:
学生姓名:
学生电话:
指导教师:
1. 按时完成实验;
2. 实验内容和过程记录完整;
3.问题解答完整、正确;
4.有实验的心得或讨论;
5.实验报告的撰写认真、格式符合要求,没有抄袭行为。
教师签名:
1. 按时完成实验;
2. 实验内容和过程记录完整;
3.问题解答完整、正确;
4.有实验的心得或讨论;
5.实验报告的撰写认真、格式符合要求,没有抄袭行为。
教师签名:
1. 按时完成实验;
2. 实验内容和过程记录完整;
3.问题解答完整、正确;
4.有实验的心得或讨论;
5.实验报告的撰写认真、格式符合要求,没有抄袭行为。
教师签名:
1. 按时完成实验;
2. 实验内容和过程记录完整;
3.问题解答完整、正确;
4.有实验的心得或讨论;
5.实验报告的撰写认真、格式符合要求,没有抄袭行为。
教师签名:
1. 按时完成实验;
2. 实验内容和过程记录完整;
3.问题解答完整、正确;
4.有实验的心得或讨论;
5.实验报告的撰写认真、格式符合要求,没有抄袭行为。
教师签名:
1. 按时完成实验;
2. 实验内容和过程记录完整;
3.问题解答完整、正确;
4.有实验的心得或讨论;
5.实验报告的撰写认真、格式符合要求,没有抄袭行为。
教师签名:
1. 按时完成实验;
2. 实验内容和过程记录完整;
3.问题解答完整、正确;
4.有实验的心得或讨论;
5.实验报告的撰写认真、格式符合要求,没有抄袭行为。
教师签名:。