合肥工业大学数据结构与算法实验报告1
数据结构与算法实验报告(线性表)

一、实验目的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 页。
算法与及数据结构实验报告

第一学期实验报告课程名称:算法与数据结构实验名称:城市链表一、实验目的本次实验的主要目的在于熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉各种链表的操作为侧重点。
同时,通过本次实验帮助学生复习高级语言的使用方法。
二、实验内容(一)城市链表:将若干城市的信息,存入一个带头结点的单链表。
结点中的城市信息包括:城市名,城市的位置坐标。
要求能够利用城市名和位置坐标进行有关查找、插入、删除、更新等操作。
(二) 约瑟夫环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;}}该算法主要用到了勾股定理,考虑到不需要实际数值,只需要大小比较,所以只用横坐标差的平方+纵坐标差的平方<= 距离的平方判定。
算法与及数据结构实验报告

算法与及数据结构实验报告算法与数据结构实验报告一、实验目的本次算法与数据结构实验的主要目的是通过实际操作和编程实现,深入理解和掌握常见算法和数据结构的基本原理、特性和应用,提高我们解决实际问题的能力和编程技巧。
二、实验环境本次实验使用的编程语言为 Python,开发环境为 PyCharm。
同时,为了进行算法性能的分析和比较,使用了 Python 的 time 模块来计算程序的运行时间。
三、实验内容1、线性表的实现与操作顺序表的实现:使用数组来实现顺序表,并实现了插入、删除、查找等基本操作。
链表的实现:通过创建节点类来实现链表,包括单向链表和双向链表,并完成了相应的操作。
2、栈和队列的应用栈的实现与应用:用数组或链表实现栈结构,解决了表达式求值、括号匹配等问题。
队列的实现与应用:实现了顺序队列和循环队列,用于模拟排队系统等场景。
3、树结构的探索二叉树的创建与遍历:实现了二叉树的先序、中序和后序遍历算法,并对其时间复杂度进行了分析。
二叉搜索树的操作:构建二叉搜索树,实现了插入、删除、查找等操作。
4、图的表示与遍历邻接矩阵和邻接表表示图:分别用邻接矩阵和邻接表来存储图的结构,并对两种表示方法的优缺点进行了比较。
图的深度优先遍历和广度优先遍历:实现了两种遍历算法,并应用于解决路径查找等问题。
5、排序算法的比较插入排序、冒泡排序、选择排序:实现了这三种简单排序算法,并对不同规模的数据进行排序,比较它们的性能。
快速排序、归并排序:深入理解并实现了这两种高效的排序算法,通过实验分析其在不同情况下的表现。
6、查找算法的实践顺序查找、二分查找:实现了这两种基本的查找算法,并比较它们在有序和无序数据中的查找效率。
四、实验步骤及结果分析1、线性表的实现与操作顺序表:在实现顺序表的插入操作时,如果插入位置在表的末尾或中间,需要移动后续元素以腾出空间。
删除操作同理,需要移动被删除元素后面的元素。
在查找操作中,通过遍历数组即可完成。
数据结构与算法分析》实验报告

数据结构与算法分析》实验报告《数据结构与算法分析》实验报告一、实验目的本次实验旨在通过实际操作和分析,深入理解数据结构与算法的基本概念和原理,掌握常见数据结构的实现和应用,以及算法的设计和性能评估。
通过实验,提高编程能力和解决实际问题的能力,培养逻辑思维和创新精神。
二、实验环境操作系统:Windows 10编程语言:Python 3x开发工具:PyCharm三、实验内容1、线性表顺序表的实现与操作链表的实现与操作2、栈和队列栈的实现与应用(表达式求值)队列的实现与应用(排队系统模拟)3、树和二叉树二叉树的遍历算法实现(前序、中序、后序)二叉搜索树的实现与操作4、图图的存储结构(邻接矩阵和邻接表)图的遍历算法(深度优先搜索和广度优先搜索)5、排序算法冒泡排序插入排序选择排序快速排序归并排序6、查找算法顺序查找二分查找四、实验步骤及结果1、线性表顺序表的实现与操作定义一个顺序表类,使用数组来存储元素。
实现插入、删除、查找等基本操作。
进行性能测试,分析在不同位置插入和删除元素的时间复杂度。
实验结果表明,在顺序表的前端或中间进行插入和删除操作时,时间复杂度较高,而在末尾操作时效率较高。
链表的实现与操作定义链表节点类和链表类。
实现链表的插入、删除、查找等操作。
比较顺序表和链表在不同操作下的性能差异。
结果显示,链表在频繁插入和删除元素的情况下表现更优,而顺序表在随机访问元素时速度更快。
2、栈和队列栈的实现与应用(表达式求值)用栈来实现表达式求值的算法。
输入表达式,如“2 + 3 ( 4 1 )”,计算并输出结果。
经过测试,能够正确计算各种复杂的表达式。
队列的实现与应用(排队系统模拟)模拟一个简单的排队系统,顾客到达和离开队列。
输出队列的状态和平均等待时间。
实验发现,队列长度和顾客等待时间与到达率和服务率密切相关。
3、树和二叉树二叉树的遍历算法实现(前序、中序、后序)构建一棵二叉树。
分别实现前序、中序、后序遍历算法,并输出遍历结果。
合工大数据分析报告(3篇)

第1篇一、引言随着信息技术的飞速发展,大数据已经成为推动社会进步的重要力量。
我国政府高度重视大数据产业的发展,将其列为国家战略性新兴产业。
合肥工业大学(以下简称“合工”)作为一所知名高等学府,在大数据领域有着丰富的教学、科研和实践经验。
本报告将对合工大数据发展现状进行分析,并提出相关建议。
二、合工大数据发展现状1. 教育教学(1)专业设置:合工在大数据领域设有多个相关专业,如数据科学与大数据技术、计算机科学与技术、软件工程等。
这些专业培养了大量具备大数据理论知识与实践能力的人才。
(2)课程体系:合工大数据相关课程体系完善,涵盖了数据挖掘、机器学习、数据分析、数据库技术等多个方面,为学生提供了全面的学习机会。
(3)实践教学:合工注重实践教学,通过实验室、实习基地、创新创业项目等途径,提高学生的实践能力。
2. 科研成果(1)科研项目:合工在大数据领域承担了多项国家级、省部级科研项目,如国家自然科学基金、国家重点研发计划等。
(2)学术论文:合工在大数据领域的学术论文发表数量和质量均位居国内前列,为我国大数据产业发展提供了有力支持。
(3)专利成果:合工在大数据领域拥有多项专利成果,为产业发展提供了技术保障。
3. 企业合作(1)产学研合作:合工与多家企业建立了产学研合作关系,共同开展大数据技术研究与应用。
(2)人才培养:合工为企业培养了大量大数据人才,满足了企业对人才的需求。
(3)技术服务:合工为企业提供大数据技术咨询服务,助力企业解决实际问题。
三、合工大数据发展存在的问题1. 人才培养与市场需求不匹配:虽然合工大数据专业设置较为完善,但部分课程设置与市场需求存在一定差距,导致毕业生就业面临压力。
2. 研发投入不足:相较于国外知名高校,合工在大数据领域的研发投入相对较少,影响了科研水平的提升。
3. 产业协同不足:合工与大数据企业的合作深度和广度有待提高,产业协同效应尚未充分发挥。
四、合工大数据发展建议1. 优化专业设置:根据市场需求,调整和优化大数据相关专业课程设置,提高人才培养质量。
数据结构与算法的实验报告

数据结构与算法的实验报告数据结构与算法第二次实验报告电子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++)语言函数,组合成模块化的形式,每个算法的实现要从时间复杂度和空间复杂度上进行评价。
HFUT 数据结构试验一预习报告

数据结构试验报告试验一 单链表试验1、试验目的(1)理解线性表的链式存储结构(2)熟练掌握动态链表结构及有关算法设计。
(3)根据具体问题的需要,设计出合理的表示数据的链表结构,并设计相关算法。
二、实验环境:Windows xp Dev C++三、实验内容:(1)编写链表类,实现基本的操作。
(2)实现以下功能:求链表中第i个结点的指针(函数);在第i个结点前插入值为x的结点;删除链表中第i个元素结点;在一个递增有序的链表L中插入一个值为x的元素,并保持其递增有序特性;将单链表L中的奇数项和偶数项结点分解开,并分别连成一个带头结点的单链表,然后再将这两个新链表同时输出在屏幕上,并保留原链表的显示结果;将单链表L中的奇数项和偶数项结点分解开,并分别连成一个带头结点的单链表,然后再将这两个新链表同时输出在屏幕上,并保留原链表的显示结果;求两个递增有序链表L1和L2中的公共元素,并以同样方式连接成链表L3。
四、试验准备(1)类结构:错误代码(枚举)enum error_code{sucess=0,overflow=1,downflow=2,rangeerror=3};节点(结构体)template <class Element_type> struct node{Element_type data;node *next;};链表类template <class Element_type>class List{public:List();//构造函数~List();//析构函数bool empty()const;//判断函数是否为空,空则返回trueerror_code show()const;//输出链表内容int length()const;//链表长度error_code get_element(const int i,Element_type &x)const;//取出第i个位置的值并赋给xnode<Element_type>* locate(const Element_type x)const;//返回值为x 的节点地址node<Element_type>* locate_node(const int i)const;//返回第i个节点的地址node<Element_type>* return_top()const;//返回链表的首节点error_code insert(const int i ,const Element_type x);//在第i个位置插入值为x的节点error_code insert(const Element_type x);//按顺序插入值为x的节点 error_code delete_element(const int i);删除第i个位置的节点error_code clear();//置为空private:node<Element_type> *top;};5、试验过程(1)具体实现:一些辅助函数:(2)试验目标的程序实现:<1>求链表中第i个结点的指针(函数),若不存在,则返回NULL。
合肥工业大学数据结构试验一实验报告

计算机与信息学院数据结构实验报告专业班级学生姓名及学号课程教学班号任课教师实验指导教师实验地点2015 ~2016 学年第 2 学期说明实验报告是关于实验教学内容、过程及效果的记录和总结,因此,应注意以下事项和要求:1.每个实验单元在4页的篇幅内完成一份报告。
“实验单元”指按照实验指导书规定的实验内容。
若篇幅不够,可另附纸。
2、各实验的预习部分的内容是进入实验室做实验的必要条件,请按要求做好预习。
3.实验报告要求:书写工整规范,语言表达清楚,数据和程序真实。
理论联系实际,认真分析实验中出现的问题与现象,总结经验。
4.参加实验的每位同学应独立完成实验报告的撰写,其中程序或相关的设计图纸也可以采用打印等方式粘贴到报告中。
严禁抄袭或拷贝,否则,一经查实,按作弊论取,并取消理论课考试资格。
5.实验报告作为评定实验成绩的依据。
实验序号及名称:实验一单链表实验实验时间∶2016年 5 月二、实验内容与步骤(过程及数据记录):<1>求链表中第i个结点的指针(函数),若不存在,则返回NULL。
实验测试数据基本要求:第一组数据:链表长度n≥10,i分别为5,n,0,n+1,n+2第二组数据:链表长度n=0,i分别为0,2node* list::address(int i){node *p = head->next;int n = 1;while (n != i&&p != NULL){p = p->next;n++;}if (p!=NULL) return p;else return NULL;}第一组数据第二组数据<2>在第i个结点前插入值为x的结点。
实验测试数据基本要求:第一组数据:链表长度n≥10,x=100, i分别为5,n,n+1,0,1,n+2 第二组数据:链表长度n=0,x=100,i=5errorcode list::insert(const int i, const int x){node *p;p = head;int n = 1;while (n != i&&p != NULL){p = p->next;n++;}if (i<1 || i>length() + 1) return rangeerror;node *s = new node;s->data = x;s->next = p->next;p->next = s;count++;return success;}<3>删除链表中第i个元素结点。