链表实验报告总结doc

链表实验报告总结doc
链表实验报告总结doc

链表实验报告总结篇一:顺序表,链表总结实验报告

实验报告

实验目的:学生管理系统(顺序表)

实验要求:

1.建表

2.求表长

3.插入

4.查找

5.删除

6.列表

7.退出

源程序:

#include

#include

#include

#define MaxSize 1000

typedef struct

{

char xh[40];

char xm[40];

int cj;

}DataType; //学生的结构

typedef struct {

DataType data[MaxSize]; //定义表的数据类型

int length; //数据元素分别放置在data[0]到data[length-1]当中

} SqList; //表的结构

void liebiao(SqList *L)//

{

int k,n;

char q;

printf("请输入,输入学生的个数:\n");

fflush(stdin);

scanf("%d",&n);

for(k=0;k {

printf("请输入学生学号\n");

scanf("

%s",L->data[k].xh);

printf("请输入学生名字\n");

scanf("%s",L->data[k].xm);

printf("请输入学生成绩\n");

scanf("%d",&L->data[k].cj); 建立表格

}

L->length=n;

}

void qb(SqList *L) //全部输出

{

int k,w;

for(k=0;klength;k++)

{

w=k+1;

printf("第%d位学生:",w);

printf("%s %s%d\n",L->data[k].xh,L->data[k].xm,L->d ata[k].cj);

}

}

int cr(SqList *L,DataType *xs,int i) //插入信息

{

int j;

if(L->length==MaxSize)

{

printf("没有!");

return 0;

else if((iL->length))

{

printf("程序溢出,不符合");

return 0;

}

else

{

for(j=L->length-1;j>=i;j--)

{

strcpy(L->data[j+1].xh,L->data[j].xh); strcpy(L->data[j+1].xm,L->data[j].xm);

L->data[j+1].cj=L->data[j].cj;

}

strcpy(L->data[i].xh,xs->xh);

strcpy(L->data[i].xm,xs->xm);

L->data[i].cj=xs->cj;

L->length=L->length+1;

}

return 0;

}

int cz(SqList *L) //查找信息

char xh[40];

char xm[40];

int cj;

int i=0,u;

printf(" 1、按学号查询\n"); printf(" 1、按姓名查询\n"); printf(" 1、按成绩查询\n"); printf("请选择:");

fflush(stdin);

scanf("%d",&u);

if (u==1)

{

printf("请输入要查找学生的学号:");

scanf("%s",xh);

for(i=0;ilength;i++)

{

篇二:单链表的实验报告

辽宁工程技术大学上机实验报告

篇三:单链表实验报告

实验一线性表基本操作的编程实现

--线性表在链表存储下的主要操作实现

班级:T523-1 姓名:王娟学号:33完成日期:XX.04.04

地点:5502学时:2学时

一、需求分析

【实验目的】

通过本次实验,对课堂上线性表的知识进行巩固,进一步熟悉线性表的

链接存储及相应的基本操作;并熟练掌握VC++ 6.0操作平台,学会调试程序,以及编写电子实验报告

【实验要求】

编写线性表的基本操作,有构造线性表,线性表的遍历,插入,删除,

查找,求表长等基本功能,在此基础上能够加入DOS下的图形界面以及学会文件的操作等功能,为以后的学习打下基础。

【实验任务】

(1).线性表基本操作的编程实现,掌握线性表的建立、遍历、插入、删除等基本操作的编程实现,也可以进一步编程实现查找、逆序、排序等操作,存储结构可以在顺序结构或链表结构中任选,可以完成部分主要功能,也可以用菜单进行管理完成大部分功能。还鼓励学生利用基本操作进行一些更实际的应用型程序设计。

(2).用菜单管理,把线性表的顺序存储和链表存储的数据插入、删除运算

进行程序实现。建议实现键盘数据输入实现改实验的通用性。为了体现功能的正常性,至少要编制遍历数据的函数.

(3).注意事项:开发语言使用C++,尽量使用面向对象的思想和实现方法,可以改编成应用软件.

【实验类型】

验证型实验

二、概要设计

需要实现线性表的以下功能:

1、创建单链表

2、删除链表中的某个结点

3、输出单链表(遍历)

4、释放结点所占空间

5、查找第i个结点

6、插入一个结点

7、求链表的长度

二、详细设计

(1).数据结构

线性表的线性结构觉决定了它的性质:数据元素之间是一种线性关系,数据元素

一个接一个的排列,除了最后一个数据,其他的数据面临的下一个数据有且仅有一个。

(2) .存储结构

单链表采用一个结点存放一个数据元素,每个结点除了包括存放数据元素值的数据域(data)外,还包括指向下一个元素的存储位置的指针域(next)。最后一个结点的指针域为空。

(3). 算法分析(函数功能的实现)

a.创建链表

创建链表的过程实际相当于申请了一个一个的节点,将这些节点用一种关系连接起来。本程序没有空置的头结点。创建的过程中分别对头结点和非头结点进行不同的处理。

(1).创建的过程

nodetype *create()//建立单链表,由用户输入各节data域之值 {

elemtype d;

nodetype *h=NULL,*s,*t;

int i=1;

cout while(1)

{

cout cin>>d;

if (d==0) break; //以0表示输入结束

if(i==1) //建立第一个节点

{

h=new nodetype;

h->data=d;

h->next=NULL;

t=h;

}

else //建立其于节点

{

s=new nodetype;

s->data=d;

s->next=NULL;

t->next=s;

t=s; //t始终指向生成的单链表最后一结点

}

i++;

}

return (h);

}

b.插入函数

链表的插入分为往前插和往后插两种操作,此程序采用了往后插的方法,同时实现了从键盘输入数据的功能。也考虑了特殊情况即链表的溢出,对此首先进行了判断,保证了程序的安全性和健壮性。在此过程中调用了另一函数find();

nodetype *ins(nodetype *h,int i,elemtype x) //在

第i个节点后插入

data域为x的节点

{

nodetype *p,*s;

s=new nodetype;//建结点s

s->data=x;

s->next=NULL;

if(i==0)//插入到第一个位置

{

s->next=h;

h=s;

}

else

{

p=find(h,i); //查找第i个节点,并由p指向该节点if (p!=NULL)

{

s->next=p->next;

p->next=s;

}

else

cout }

return h;

}

c.删除函数

对于删除,和插入一样也要通过改链来实现,不过在单链表中,当一个指针指向某一个节点时,是不能删除它的,因为地址存放在上一个节点的链域中,所以必须启动一个尾随指针。同插入一样,是删除某个结点后的数,也调用了find ();函数,由于插入和删除类似所以不附上原程序。

d.输出函数(遍历)

采用while循环输出单链表的内容,用到了p1=p1->next 以及输出函数cout if (p==NULL)

cout else

while(p!=NULL) //链表不为空时输出

{

coutdata p=p->next;

城市链表实验报告

2014-2015学年第一学期实验报告 课程名称:算法与数据结构 实验名称:城市链表

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

链表实验报告

C语言程序设计实验报告 实验一:链表的基本操作一·实验目的 1.掌握链表的建立方法 2.掌握链表中节点的查找与删除 3.掌握输出链表节点的方法 4.掌握链表节点排序的一种方法 5.掌握C语言创建菜单的方法 6.掌握结构化程序设计的方法 二·实验环境 1.硬件环境:当前所有电脑硬件环境均支持 2.软件环境:Visual C++6.0 三.函数功能 1. CreateList // 声明创建链表函数 2.TraverseList // 声明遍历链表函数 3. InsertList // 声明链表插入函数 4.DeleteTheList // 声明删除整个链表函数 5. FindList // 声明链表查询函数 四.程序流程图 五.程序代码 #include #include typedef int Elemtype; typedef int Status; typedef struct node//定义存储节点 { int data;//数据域 struct node *next;//结构体指针 } *linklist,node;//结构体变量,结构体名称 linklist creat (int n)//创建单链表 { linklist head,r,p;//定义头指针r,p,指针 int x,i; head=(node *)malloc(sizeof(node));//生成头结点

r=head;//r指向头结点 printf("输入数字:\n"); for(i=n;i>0;i--)//for 循环用于生成第一个节点并读入数据{ scanf("%d",&x); p=(node *)malloc(sizeof(node)); p->data=x;//读入第一个节点的数据 r->next=p;//把第一个节点连在头结点的后面 r=p;//循环以便于生成第二个节点 } r->next=0;//生成链表后的断开符 return head;//返回头指针 } void output (linklist head)//输出链表 { linklist p; p=head->next; do { printf("%3d",p->data); p=p->next; } while(p); printf("\n") } Status insert ( linklist &l,int i, Elemtype e)//插入操作 { int j=0; linklist p=l,s; while(jnext; ++j; } if(!p || j>i-1) return -1; else { s=(node *)malloc(sizeof(node)); s->data=e; s->next=p->next; p->next=s; return 1; } } Status delect ( linklist &l,int i, Elemtype &e)//删除操作 { int j=0; linklist p=l,q; while(jnext) { p=p->next; ++j; } if(!p->next || j>i-1) return -1;

软件实验心得体会范文

软件实验心得体会范文 经过这学期软件工程实验的学习,深深感到用户需求对软件的重要性。成功的软件产品是建立在成功的需求基础之上的,而高质量的需求来源于用户与开发人员之间有效的沟通与合作。当用户有一个问题可以用计算机系统来解决,而开发人员开始帮助用户解决这个问题,沟通就开始了。 需求获取可能是最困难、最关键、最易出错及最需要沟通交流的活动。对需求的获取往往有错误的认识:用户知道需求是什么,我们所要做的就是和他们交谈从他们那里得到需求,只要问用户系统的目标特征,什么是要完成的,什么样的系统能适合商业需要就可以了,但是实际上需求获取并不是想象的这样简单,这条沟通之路布满了荆棘。首先需求获取要定义问题范围,系统的边界往往是很难明确的,用户不了解技术实现的细节,这样造成了系统目标的混淆。 其次是对问题的理解,用户对计算机系统的能力和限制缺乏了解,任何一个系统都会有很多的用户或者不同类型的用户,每个用户只知道自己需要的系统,而不知道系统的整体情况,他们不知道系统作为一个整体怎么样工作效率更好,也不太清楚那些工作可以交给软件完成,他们不清楚需求是什么,或者说如何以一种精确的方式来描述需求,他们需要开发人员的协助和指导,但是用户与开发人员之间的交流很容易出现障碍,忽略了那些被认为是"很明显"的信息。

最后是需求的确认,因为需求的不稳定性往往随着时间的推移产生变动,使之难以确认。为了克服以上的问题,必须有组织的执行需求的获取活动。 需求获取活动要完成的任务或者步骤的过程如下: 编写项目视图和范围文档 系统的需求包括四个不同的层次:业务需求、用户需求和功能需求、非功能性需求。业务需求说明了提供给用户新系统的最初利益,反映了组织机构或用户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。用户需求文档描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明。功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。 非功能性需求是用户对系统良好运作提出的期望,包括了易用性、反应速度、容错性、健壮性等等质量属性。需求获取就是根据系统业务需求去获得系统用户需求,然后通过需求分析得到系统的功能需求和非功能需求。项目视图和范围文档就是从高层次上描述系统的业务需求,应该包括高层的产品业务目标,评估问题解决方案的商业和技术可行性,所有的使用实例和功能需求都必须遵从的标准。而范围文档定义了项目产品所包括的所有工作及产生产品所用的过程。项目相关人员对项目的目标和范围能达成共识,整个项目组都应该把注意力集中在项目目标和范围上。

单链表实验报告

计算机与信息技术学院综合性、设计性实验报告 一、实验目的 (1)熟悉顺序表的创建、取值、查找、插入、删除等算法,模块化程序设计方法。 二、实验仪器或设备 (1)硬件设备:CPU为Pentium 4 以上的计算机,内存2G以上 (2)配置软件:Microsoft Windows 7 与VC++6.0 三、总体设计(设计原理、设计方案及流程等) 设计原理: 单链表属于线性表,线性表的存储结构的特点是:用一组任意存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。因此,对于某个元素来说,不仅需要存储其本身的信息,还需要存储一个指示其直接后继的信息。 设计方案: 采用模块化设计的方法,设计各个程序段,最终通过主函数实现各个程序段的功能。设计时,需要考虑用户输入非法数值,所以要在程序中写入说可以处理非法数值的代码。 设计流程: 1. 引入所需的头文件; 2. 定义状态值; 3. 写入顺序表的各种操作的代码; 写入主函数,分别调用各个函数。在调用函数时,采用if结构进行判断输 入值是否非法,从而执行相应的程序 四、实验步骤(包括主要步骤、代码分析等) #include // EOF(=A Z 或F6),NULL #in clude // srand( ) ,rand( ),exit (n) #in clude // malloc( ),alloc( ),realloc() 等 #in clude // INT_MAX 等 #in clude #in clude #in clude // floor(),ceil( ),abs() #in clude // cout,ci n #in clude // clock( ),CLK_TCK,clock_t #defi ne TRUE 1 #defi ne FALSE 0 #defi ne OK 1 #defi ne ERROR 0 #defi ne INFEASIBLE -1

实验心得体会

水泥混凝土配合比设计实验心得体会 随着六月二十八日我们完成了水泥混凝土的强度试验,这次关于水泥混凝土的一系列实验部分我们已经完成,接下来要做的就是内业整理部分了,处理实验数据,完成实验报告,在5天的实验当中,我们每个人都有自己的任务,大家都积极参与进来,真的学到了不少知识,同时也给我留下了不少深刻的印象,回想一下,总结为以下三个方面: 第一:耐心、不怕脏、不怕累不可少。在这几天的实验过程中,对于实验有时候真的很枯燥,需要我们的耐心还有细心;而有些时候,我们需我们发扬不怕累不怕苦的精神,该拿锤子敲集料的时候就要敲集料;该铲石头的时候就要铲石头;该人工拌合混凝土的时候,我们就得拿铁锹一遍又一遍的拌合混凝土…在这一过程中我们需要不怕脏不怕累,该怎么样就怎么样,既然我热爱这个专业,当初选择了这个专业,我就不怕吃苦,今后参加工作后环境会更苦,所以通过这次实验我就开始锻炼自己,锻炼自己的意志,周末我们依然可以在实验室中度过,中午可以不休息,在实验室测水泥的凝结时间,这些我做到了,现在回想起来,还是蛮高兴的。 第二:严谨细致不可丢。实验本身就是通过我们自己的操作来得到某些结论,或观察实验现象,所以为了得到更准确的实验结论,我们必须在实验过程中,要求自己以严谨的态度去完成每一步操作,比如称量是我们要细致的去调节,严格按照规范上的质量称取所需要的试验品,而不是只求个大概,在有量筒取水时,我们要看凹液面的最低处,而不是懒懒散散的随便看一下;另外在实验过程中可能有些实验的操作比较多,步骤比较繁琐,这时我们不能抱着求快的心理将有些步骤省略,或者缩短操作时间等等,不能想当然的,这些都会对实验造成很大的误差,那么从某种意义上来说,它已经失去了原来的意义了。比如在水泥的凝结时间的测定中我们就需要每半小时测一次,虽然在前几个小时,都是一样的,但是我还是要按照规范来测,免得造成误差。 第三:总结思考不可无。实验的魅力在于经过我们自己的长时间操作,曲曲折折的过程最终我们得到了实验结果那一刻的喜悦之情!当然试验不能就此认为结束了,我们需要做的还有很多其中很重要的一方面就是:总结思考。试验完成后我们要想一下为什么会出现这样的结果,为什么与理论结果会有出入?造成这些不同的原因在哪里?我们还可以与其他组进行对比,在对比中找出不同,然后分析不同的原因在哪里?只有这样我们的实验做得才有意义,加入了自己的思考,而不是简简单单地对着规范上的条文,按照上面所述,呆板的操作。比如在试验后,我就分析了一下为什么我们的混凝土强度没有其他组的强度高?水灰比的不同是一方面,还有就是在拌合过程中出现离析现象。 总之,在这5天的实验过程中,真的学到了一些东西,给我印象最深刻的是;

链表实现多项式相加实验报告

实验报告 课程名称:数据结构 题目:链表实现多项式相加 班级: 学号: 姓名: 完成时间:2012年10月17日

1、实验目的和要求 1)掌握链表的运用方法; 2)学习链表的初始化并建立一个新的链表; 3)知道如何实现链表的插入结点与删除结点操作; 4)了解链表的基本操作并灵活运用 2、实验内容 1)建立两个链表存储一元多项式; 2)实现两个一元多项式的相加; 3)输出两个多项式相加后得到的一元多项式。 3、算法基本思想 数降序存入两个链表中,将大小较大的链表作为相加后的链表寄存处。定义两个临时链表节点指针p,q,分别指向两个链表头结点。然后将另一个链表中从头结点开始依次与第一个链表比较,如果其指数比第一个小,则p向后移动一个单位,如相等,则将两节点的系数相加作为第一个链表当前节点的系数,如果为0,则将此节点栓掉。若果较大,则在p前插入q,q向后移动一个,直到两个链表做完为止。 4、算法描述 用链表实现多项式相加的程序如下: #include #include #include struct node{ int exp; float coef; struct node*next; };

void add_node(struct node*h1,struct node*h2); void print_node(struct node*h); struct node*init_node() { struct node*h=(struct node*)malloc(sizeof(struct node)),*p,*q; int exp; float coef=1.0; h->next=NULL; printf("请依次输入多项式的系数和指数(如:\"2 3\";输入\"0 0\"时结束):\n"); p=(struct node*)malloc(sizeof(struct node)); q=(struct node*)malloc(sizeof(struct node)); for(;fabs(coef-0.0)>1.0e-6;) { scanf("%f %d",&coef,&exp); if(fabs(coef-0.0)>1.0e-6) { q->next=p; p->coef=coef; p->exp=exp; p->next=NULL; add_node(h,q); } } free(p); free(q); return(h); } void add_node(struct node*h1,struct node*h2) { struct node*y1=h1,*y2=h2; struct node*p,*q; y1=y1->next; y2=y2->next; for(;y1||y2;) if(y1) { if(y2) { if(y1->expexp) y1=y1->next; else if(y1->exp==y2->exp) { y1->coef+=y2->coef; if(y1->coef==0)

链表实验报告

链表实验报告

————————————————————————————————作者: ————————————————————————————————日期:

《数据结构》实验报告二 系别:嵌入式系统工程系班级:嵌入式11003班 学号:11160400314姓名:孙立阔 日期:2012年4月9日指导教师:申华 一、上机实验的问题和要求: 单链表的查找、插入与删除。设计算法,实现线性结构上的单链表的产生以及元素的查找、插入与删除。具体实现要求: 1.从键盘输入10个字符,产生不带表头的单链表,并输入结点值。 2.从键盘输入1个字符,在单链表中查找该结点的位置。若找到,则显示“找到了”;否则, 则显示“找不到”。 3.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插 入在对应位置上,输出单链表所有结点值,观察输出结果。 4.从键盘输入1个整数,表示欲删除结点的位置,输出单链表所有结点值,观察输出结果。 5.将单链表中值重复的结点删除,使所得的结果表中个结点值均不相同,输出单链表所有结 点值,观察输出结果。 6.删除其中所有数据值为偶数的结点,输出单链表所有结点值,观察输出结果。 7.(★)将单链表分解成两个单链表A和B,使A链表中含有原链表中序号为奇数的元素, 而B链表中含有原链表中序号为偶数的元素,且保持原来的相对顺序,分别输出单链表A和单链表B的所有结点值,观察输出结果。 二、程序设计的基本思想,原理和算法描述: (包括程序的结构,数据结构,输入/输出设计,符号名说明等) 创建一个空的单链表,实现对单链表的查找,插入,删除的功能。 三、源程序及注释: #defineOK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define TRUE 1

各种实验心得体会

实验心得体会 在做测试技术的实验前,我以为不会难做,就像以前做物理实验一样,做完实验,然后两下子就将实验报告做完.直到做完测试实验时,我才知道其实并不容易做,但学到的知识与难度成正比,使我受益匪浅. 在做实验前,一定要将课本上的知识吃透,因为这是做实验的基础,否则,在老师讲解时就会听不懂,这将使你在做实验时的难度加大,浪费做实验的宝贵时间.比如做应变片的实验,你要清楚电桥的各种接法,如果你不清楚,在做实验时才去摸索,这将使你极大地浪费时间,使你事倍功半.做实验时,一定要亲力亲为,务必要将每个步骤,每个细节弄清楚,弄明白,实验后,还要复习,思考,这样,你的印象才深刻,记得才牢固,否则,过后不久你就会忘得一干二净,这还不如不做.做实验时,老师还会根据自己的亲身体会,将一些课本上没有的知识教给我们,拓宽我们的眼界,使我们认识到这门课程在生活中的应用是那么的广泛. 通过这次测试技术的实验,使我学到了不少实用的知识,更重要的是,做实验的过程,思考问题的方法,这与做其他的实验是通用的,真正使我们受益匪浅. 实验心得体会 这个学期我们学习了测试技术这门课程,它是一门综合应用相关课程的知识和内容来解决科研、生产、国防建设乃至人类生活所面临的测试问题的课程。测试技术是测量和实验的技术,涉及到测试方法的分类和选择,传感器的选择、标定、安装及信号获取,信号调理、变换、信号分析和特征识别、诊断等,涉及到测试系统静动态性能、测试动力学方面的考虑和自动化程度的提高,涉及到计算机技术基础和基于LabVIEW的虚拟测试技术的运用等。 课程知识的实用性很强,因此实验就显得非常重要,我们做了金属箔式应变片:单臂、半桥、全桥比较,回转机构振动测量及谱分析,悬臂梁一阶固有频率及阻尼系数测试三个实验。刚开始做实验的时候,由于自己的理论知识基础不好,在实验过程遇到了许多的难题,也使我感到理论知识的重要性。但是我并没有气垒,在实验中发现问题,自己看书,独立思考,最终解决问题,从而也就加深我对课本理论知识的理解,达到了“双赢”的效果。 实验中我学会了单臂单桥、半桥、全桥的性能的验证;用振动测试的方法,识别一小阻尼结构的(悬臂梁)一阶固有频率和阻尼系数;掌握压电加速度传感

单链表的插入和删除实验报告

. 实验一、单链表的插入和删除 一、目的 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 二、要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 三、程序源代码 #include"stdio.h" #include"string.h" #include"stdlib.h" #include"ctype.h" typedef struct node //定义结点 { char data[10]; //结点的数据域为字符串 struct node *next; //结点的指针域 }ListNode; typedef ListNode * LinkList; // 自定义LinkList单链表类型 LinkList CreatListR1(); //函数,用尾插入法建立带头结点的单链表

ListNode *LocateNode(); //函数,按值查找结点 void DeleteList(); //函数,删除指定值的结点void printlist(); //函数,打印链表中的所有值 void DeleteAll(); //函数,删除所有结点,释放内存 //==========主函数============== void main() { char ch[10],num[10]; LinkList head; head=CreatListR1(); //用尾插入法建立单链表,返回头指针printlist(head); //遍历链表输出其值 printf(" Delete node (y/n):");//输入“y”或“n”去选择是否删除结点scanf("%s",num); if(strcmp(num,"y")==0 || strcmp(num,"Y")==0){ printf("Please input Delete_data:"); scanf("%s",ch); //输入要删除的字符串 DeleteList(head,ch); printlist(head); } DeleteAll(head); //删除所有结点,释放内存 } //==========用尾插入法建立带头结点的单链表

C语言链表实验报告

链表实验报告 一、实验名称 链表操作的实现--学生信息库的构建 二、实验目的 (1)理解单链表的存储结构及基本操作的定义 (2)掌握单链表存储基本操作 (3)学会设计实验数据验证程序 【实验仪器及环境】计算机 Window XP操作系统 三、实验内容 1、建立一个学生成绩信息(学号,姓名,成绩)的单链表,按学号排序 2、对链表进行插入、删除、遍历、修改操作。 3、对链表进行读取(读文件)、存储(写文件) 四、实验要求 (1)给出终结报告(包括设计过程,程序)-打印版 (2)对程序进行答辩

五、实验过程、详细内容 1、概念及过程中需要调用的函数 (1)链表的概念结点定义 结构的递归定义 struct stud_node{ int num; char name[20]; int score; struct stud_node *next; }; (2)链表的建立 1、手动输入 struct stud_node*Create_Stu_Doc() { struct stud_node *head,*p; int num,score; char name[20]; int size=sizeof(struct stud_node); 【链表建立流程图】

2、从文件中直接获取 先建立一个 (3)链表的遍历 (4 )插入结点 (5)删除结点 (6)动态储存分配函数malloc () void *malloc(unsigned size) ①在内存的动态存储区中分配一连续空间,其长度为size ②若申请成功,则返回一个指向所分配内存空间的起始地址的指针 ③若申请不成功,则返回NULL (值为0) ④返回值类型:(void *) ·通用指针的一个重要用途 ·将malloc 的返回值转换到特定指针类型,赋给一个指针 【链表建立流程图】 ptr ptr ptr->num ptr->score ptr=ptr->next head pt r s s->next = ptr->next ptr->next = s 先连后断 ptr2=ptr1->next ptr1->next=ptr2->next free (ptr2)

实验心得总结范文精选

实验心得总结范文精选 实验心得总结范文精选一 作为高频电子的老师,高频基础实验可以说算得上是让学生一次崭新的实验尝试。比如说:新奇,原则性强等等,学生从一开始的一窍不通,到后来的熟悉,喜欢,感觉自己学到了很多,很多。算起来虽只让学生做了六次实验,仅仅只是初步接触,当却感觉学生学到了不少东西。一些从书本上学不到的东西。 我觉得要做好高频电子实验,需要意识到如下几点: 1、充分的预习是必要的。以往做电子技能实训与考核实验台电工实验时学生往往只看一下步骤,原理一带而过。这样做实验时便会吃大亏。一般在实验前得花上一个小时去预习。这样试验结果是令人满意的。

2、需要预先对结果进行预测,至少在碰到问题时会合理的去分析问题。之所以会这样说也是有血的教训的,由于某个学生对过程中一个问题视而不见,导致出现了重做的悲惨命运。 3、对一些实验注意事项要在意。这里可不是说我弄坏了什么东西,而是基于大家都明白的一个道理:水火无情,电更无情。可能是由于我的原因吧,我每次让学生实验时,似乎对学生很不放心,可谓事必躬亲,再三叮嘱,这也有一个好处:试验出错的可能性大大减少,而且安生性也大大增加了。 在实验的过程中,让学生学会如何分析问题,如何解决问题,以及如何总结问题。通过这段时间的高频电子实验,学生能够掌握高频电子的一些基本理论了。比方说lc谐振电路,频带的展宽等。让学生了解到仅仅通过一些简单的试验仪器便可以将知识运用进生活中去。这对于学生以后的发展,我想是大有裨益的。 实践是检验真理唯一的标准,我想电工电子电力拖动实训考核台高频电子实验之所以会在学生中大受欢迎,并被视

为学校开放性实验室,与其在实验中和学生走在一起的原则是分不开的。希望以后还有机会进这个实验室。 实验心得总结范文精选二 实验相对于每个人来说都有着特殊的意义,一般意义上来说他肯定是都会有不一样的心得体会,对于那些学习过实验后的人来说记录下这些心得体会是十分重要的,写一份实验心得体会他不仅仅能抒发自己的情感,与此同时我们还能学会做人,在这里,小编为大家准备了实验心得体会的范文,小编希望能够帮助大家更好的阐述自己的校本实验心得体会。 1.这个学期我们学习了测试技术这门课程,它是一门综合应用相关课程的知识和内容来解决科研、生产、国防建设乃至人类生活所面临的测试问题的课程。 测试技术是测量和实验的技术,涉及到测试方法的分类和选择,传感器的选择、标定、安装及信号获取,信号调理、变换、信号分析和特征识别、诊断等,涉及到测试系统静动

链表基本操作实验报告

实验2 链表基本操作实验 一、实验目的 1. 定义单链表的结点类型。 2. 熟悉对单链表的一些基本操作和具体的函数定义。 3. 通过单链表的定义掌握线性表的链式存储结构的特点。 二、实验内容与要求 该程序的功能是实现单链表的定义和主要操作。如:单链表建立、输出、插入、删除、查找等操作。该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。程序中的单链表(带头结点)结点为结构类型,结点值为整型。 要求: 同学们可参考指导书实验2程序、教材算法及其他资料编程实现单链表相关操作。必须包括单链表创建、输出、插入、删除操作,其他操作根据个人情况增减。 三、 算法分析与设计。 头结点 ......

2.单链表插入 s->data=x; s->next=p->next; p->next=s; 3.单链表的删除: p->next=p->next->next;

四、运行结果 1.单链表初始化 2.创建单链表 3.求链表长度 4.检查链表是否为空 5.遍历链表 6.从链表中查找元素 7.从链表中查找与给定元素值相同的元素在顺序表中的位置

8.向链表中插入元素 插入元素之后的链表 9.从链表中删除元素 删除位置为6的元素(是3) 10.清空单链表 五、实验体会 经过这次单链表基本操作实验,自己的编程能力有了进一步的提高,认识到自己以前在思考一个问题上思路不够开阔,不能灵活的表达出自己的想法,虽然在打完源代码之后出现了一些错误,但是经过认真查找、修改,最终将错误一一修正,主要是在写算法分析的时候出现了障碍,经过从网上查找资料,自己也对程序做了仔细的分析,对单链表创建、插入、删除算法画了详细的N-S流程图。

心得体会 心得体会范文 实验心得体会四篇

实验心得体会四篇 实验心得体会(一) 时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。 在学习单片机这门课程之前,就早早的听各种任课老师和学长学姐们说过这门课程的重要性和学好这门课程的关键~~多做单片机实验。 这个学期,我们除了在课堂上学习理论知识,还在实验室做了7次实验。将所学知识运用到实践中,在实践中发现问题,强化理论知识。 现在,单片机课程已经结束,即将开始考试了,需要来好好的反思和回顾总结下了。 第一次是借点亮LED灯来熟悉keil软件的使用和试验箱上器材。第一次实验体现了一个人对新事物的接受能力和敏感度。虽然之前做过许多种实验。但依旧发现自己存在一个很大的问题,对已懂的东西没耐心听下去,容易开小差;在听老师讲解软件使用时,思路容易停滞,然后就跟不上老师的步骤了,结果需要别人再次指导;对软件的功能没有太大的热情去研究探索,把一个个图标点开,进去看看。所以第一次试验相对失败。鉴于此,我自己在宿舍下载了软件,然后去熟悉它的各个功能,使自己熟练掌握。 在做实验中,第二个问题应该是准备不充分吧。一开始,由于没有课前准备的意识,每每都是到了实验室才开始编程,完成作业,导

致每次时间都有些仓促。后来在老师的批评下,认识到这是个很大的问题:老师提前把任务告诉我们,就是希望我们私下把程序编好。于是我便在上机之前把程序编好,拷到U盘,这样上机时只需调试,解决出现的问题。这样就会节约出时间和同学讨论,换种思路,换种方法,把问题给吃透。发现、提出、分析、解决问题和实践能力是作为我们这个专业的基本素质。 三是我的依赖性很大,刚开始编程序时喜欢套用书上的语句,却对语句的理解不够。于是当程序出现问题时,不知道如何修改,眼前的程序都是一块一块的被拼凑整合起来的,没法知道哪里错了。但是编程是一件很严肃的事情,容不得半点错误。于是便只能狠下决心,坚持自己编写,即使套用时,也把每条语句弄懂。这也能激发了学习的兴趣。 还有一次实验是调出电脑里的程序,让它在试验箱上实现其功,让我们去体会别人编程的技巧和程序逻辑美感。看了之后,不得不说我目前的水平简直太小儿科了。还有连线也是个问题,对试验箱内部结构功能的不懂,以至于不知道如何连线让程序实现其功能。这让我意识到单片机是软件和硬件的结合,两者是一个整体。所以必须把硬件方面加强。 五是基础知识的薄弱,也是最基础的问题吧!在用C语言编程时,才发现自己C语言真的太差劲了,虽然这门课程早就学过,但是就目前所掌握的C语言知识,对于单片机编程远远不够。C语言也是我们以后学各种语言的基础,必须要花大量的时间温习强化。

链表的基本操作-数据结构实验报告

大学数据结构实验报告 课程名称数据结构实验第(四)次实验实验名称链表的基本操作 学生姓名于歌专业班级学号 实验成绩指导老师(签名)日期2018年10月01日 一、实验目的 1. 学会定义单链表的结点类型,实现对单链表的一些基本操作和具体 的函数定义,了解并掌握单链表的类定义以及成员函数的定义与调用。 2. 掌握单链表基本操作及两个有序表归并、单链表逆置等操作的实现。 二、实验要求 1.预习C语言中结构体的定义与基本操作方法。 2.对单链表的每个基本操作用单独的函数实现。 3.编写完整程序完成下面的实验内容并上机运行。 4.整理并上交实验报告。 三、实验内容: 1.编写程序完成单链表的下列基本操作: (1)初始化单链表La (2)在La中插入一个新结点 (3)删除La中的某一个结点 (4)在La中查找某结点并返回其位置 (5)打印输出La中的结点元素值 (6)清空链表 (7)销毁链表 2 .构造两个带有表头结点的有序单链表La、Lb,编写程序实现将La、 Lb合并成一个有序单链表Lc。 四、思考与提高: 1.如果上面实验内容2中合并的表内不允许有重复的数据该如何操作? 2.如何将一个带头结点的单链表La分解成两个同样结构的单链表Lb,Lc,使得Lb中只含La表中奇数结点,Lc中含有La表的偶数结点?五、实验设计 1.编写程序完成单链表的下列基本操作: (1)初始化单链表La LinkList InitList() {

int i,value,n; LinkList H=(LinkList)malloc(sizeof(LNode)); LinkList P=H; P->next=NULL; do{ printf("请输入链表的长度:"); scanf("%d",&n); if(n<=0) printf("输入有误请重新输入!\n"); }while(n<=0); printf("请输入各个元素:\n"); for(i=0; idata=value; P->next=NEW; NEW->next=NULL; P=NEW; } printf("链表建立成功!\n"); return H->next; } (2)在La中插入一个新结点 LinkList InsertList(LinkList L,int i,ElemType value) { LinkList h,q,t=NewLNode(t,value); int x=0; h=q=L; if(i==1) t->next=h, h=t; else { while(x++next; t->next=q->next; q->next=t; } printf("插入成功!\n"); return h; } (3)删除La中的某一个结点

链表基本操作实验报告

实验2 链表基本操作实验 一、实验目的 1. 定义单链表的结点类型。 2. 熟悉对单链表的一些基本操作和具体的函数定义。 3. 通过单链表的定义掌握线性表的链式存储结构的特点。 二、实验容与要求 该程序的功能是实现单链表的定义和主要操作。如:单链表建立、输出、插入、删除、查找等操作。该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。程序中的单链表(带头结点)结点为结构类型,结点值为整型。 要求: 同学们可参考指导书实验2程序、教材算法及其他资料编程实现单链表相关操作。必须包括单链表创建、输出、插入、删除操作,其他操作根据个人情况增减。 三、 算法分析与设计。 头结点

2.单链表插入 s->data=x; s->next=p->next; p->next=s; 3.单链表的删除: p->next=p->next->next;

四、运行结果 1.单链表初始化 2.创建单链表 3.求链表长度 4.检查链表是否为空 5.遍历链表 6.从链表中查找元素 7.从链表中查找与给定元素值相同的元素在顺序表中的位置

8.向链表中插入元素 插入元素之后的链表 9.从链表中删除元素 删除位置为6的元素(是3) 10.清空单链表 五、实验体会 经过这次单链表基本操作实验,自己的编程能力有了进一步的提高,认识到自己以前在思考一个问题上思路不够开阔,不能灵活的表达出自己的想法,虽然在打完源代码之后出现了一些错误,但是经过认真查找、修改,最终将错误一一修正,主要是在写算法分析的时候出现了障碍,经过从网上查找资料,自己也对程序做了仔细的分析,对单链表创建、插入、删除算法画了详细的N-S流程图。

单链表实验报告

单链表实验报告

————————————————————————————————作者:————————————————————————————————日期:

计算机与信息技术学院综合性、设计性实验报告 专业:网络工程年级/班级:大二 2016—2017学年第一学期 课程名称数据结构指导教师李四 学号姓名16083240XX 张三 项目名称单链表的基本操作实验类型综合性/设计性实验时间2017.10.3 实验地点216机房 一、实验目的 (1)熟悉顺序表的创建、取值、查找、插入、删除等算法,模块化程序设计方法。 二、实验仪器或设备 (1)硬件设备:CPU为Pentium 4以上的计算机,内存2G以上 (2)配置软件:Microsoft Windows 7与VC++6.0 三、总体设计(设计原理、设计方案及流程等) 设计原理: 单链表属于线性表,线性表的存储结构的特点是:用一组任意存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。因此,对于某个元素来说,不仅需要存储其本身的信息,还需要存储一个指示其直接后继的信息。 设计方案: 采用模块化设计的方法,设计各个程序段,最终通过主函数实现各个程序段的功能。设计时,需要考虑用户输入非法数值,所以要在程序中写入说可以处理非法数值的代码。 设计流程: 1.引入所需的头文件; 2.定义状态值; 3.写入顺序表的各种操作的代码; 写入主函数,分别调用各个函数。在调用函数时,采用if结构进行判断输入值是否非法,从而执行相应的程序 四、实验步骤(包括主要步骤、代码分析等) #include<stdio.h>// EOF(=^Z或F6),NULL #include<stdlib.h> // srand(),rand(),exit(n) #include<malloc.h> // malloc( ),alloc( ),realloc()等 #include //INT_MAX等 #include #include // floor(),ceil( ),abs( ) #include<iostream.h> // cout,cin #include // clock(),CLK_TCK,clock_t #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0

实验报告心得体会

智能家居物联网工程训练---心得体会 这一个学期的电子工程训练给我最为深刻的感受就是——进了信电系真好。尤其是在四楼做的智能家居物联网工程训练,通过对小白路由器,智能插座和智能机器人小车的组装和使用体验,更是让我充分体会到了电子信息产业的魅力和乐趣。 在各项科技都飞速发展的当今社会,电子信息产业作为21世纪最具潜力的产业之一,其发展速度更是如雨后春笋般迅猛。作为一名信息工程专业的当代大学生,更是不能与时代脱节,必须及时接触电子信息产业的尖端科技,才能跟上电子信息发展的步伐。感谢这门课程让我在学习理论的同时,能够亲手实践,接触并了解了智能家居物联网的相关知识,参与并操作了原来只能在电视上观看的事情。 记得以前看电视的时候,常会不经意看到那些明星在综艺节目里展示他的智能家居,在千里外用手机按几个按键,家里的电视就自动播放,灯就自动点亮之类的。当时就觉得,这就是高科技啊。然而在这个学期,通过对小白路由器的操作,我也可以通过手机使得小白路由器在自动播放视频了,不仅仅是体验了一把高科技,更是对小白的信号网络有了初步的了解。这比仅仅在生活中使用它更有意义。还有实用性极强的只能插座,不仅能避免一些因忘关电源引起的不幸,也能有效避免资源的浪费。 其实整个课程中,我最喜欢的还是wifi智能机器人小车。记得每次看到机器人大赛上那些灵活行动的智能机器人时,我就羡慕得不得了,虽然内心无比向往,但一直没有机会尝试。直到在这门课上,我亲手组装并操作了机器人小车,还在这个过程中了解了机器人小车的主要部件。看着那么复杂高端的机器人小车居然是我组装出来的,真的十分满足。印象深刻的是,当我们把小车拿到实验室外做循迹实验时,别的同学路过看到了一台台灵活运动的小车后,都带着向往和好奇的眼神向我们询问:“你们上的是什么

单链表的基本操作实验报告

湖南第一师范学院信息科学与工程系实验报告 课程名称:数据结构与算法成绩评定: 实验项目名称:单链表的基本操作指导教师: 学生姓名:沈丽桃学号: 10403080118 专业班级: 10教育技术 实验项目类型:验证实验地点:科B305 实验时间: 2011 年 10 月20 日一、实验目的与要求: 实验目的:实现线性链表的创建、查找、插入、删除与输出。 基本原理:单链表的基本操作 二、实验环境:(硬件环境、软件环境) 1.硬件环境:奔ⅣPC。 2.软件环境:Windows XP 操作系统,TC2.0或VC++。 三、实验内容:(原理、操作步骤、程序代码等) #include #include #include struct celltype { int element; struct celltype*next; }; typedef int position; void main() { struct celltype*head,*p; int x,choice; void INSERT(int x,struct celltype*p); void LOCATE(int x,struct celltype*p); void DELETE(int x,struct celltype*p); p=(struct celltype*)malloc(sizeof(struct celltype)); head=p; p->element=0; p->next=NULL; printf(“Please option:1:Insert 2:Locate 3:Delete\n”); printf(“Please choose:”); scanf(“%d”,&choice); switch(choice) case 1: printf(“Please input a node:”); scanf(“%d”,&x);

相关文档
最新文档