文档库 最新最全的文档下载
当前位置:文档库 › 实验四单链表

实验四单链表

实验四单链表
实验四单链表

实验四单链表

一、实验目的

1)熟练掌握单链表的类型定义和基本操作算法(以建立、插入、删除、遍历、排序和归并等操作为重点)的实现。

2)通过实验加深对C语言的使用(特别是函数调用、数组、结构体和指针的应用)。

3) 掌握模块化程序设计方法。

二、预备知识

1.单链表的类型定义

struct LNode

{

ElemType data;

struct LNode *next;//指向直接后继结点

};

typedef struct LNode LNode, *LinkList;

2. 单链表的基本操作

1)初始化线性表InitList(&L)

该运算的结果是构造一个空的线性表L,为线性表分配存储空间用于存放数据元素。

2)销毁线性表DestroyList(&L )

该运算的结果是释放线性表L占用的内存空间。

3)判定是否为空表ListEmpty(L)

该运算返回一个值表示L是否为空表。若L为空表,则返回1,否则返回0。

4)求线性表的长度ListLength(L)

该运算返回顺序表L的长度。实际上只需返回length成员的值即可。

5)PriorElem( L, cur_e, &pre_e )

该运算返回给定数据元素的前驱数据元素的值

6)NextElem( L, cur_e, &next_e )

该运算返回给定数据元素的后继数据元素的值

7)输出线性表DispList(L)

该运算当线性表L不为空时,顺序输出L中各数据元素的值。

8)求某个数据元素值GetElem(L,i,&e)

该运算返回L中第i(1≤i≤ListLength(L))个元素的值,存放在e中。

8)按元素值查找LocateElem(L,e)

该运算顺序查找第1个值域与e相等的数据元素的序号。若这样的元素不存在,则返回值为0。

9)插入数据元素ListInsert(&L,i,e)

该运算在顺序表L的第i个位置(1≤i≤ListLength(L)+1)上插入新的元素e。10)删除数据元素ListDelete(&L,i,&e)

该运算删除顺序表L的第i(1≤i≤ListLength(L))个元素。

11)清空线性表ClearList( &L )

删除线性表L中的所有数据元素,但不释放已分配给线性表的存储空间。三、实验题目

1)用C语言实现带头结点单链表的ADT(包括单链表的类型定义和基本操作)。

2)在1)的基础上设计一个主程序完成如下功能:

(假定数据元素的类型为字符型)

⑴初始化单链表L;

⑵依次采用尾插法插入a,b,c,d,e元素;

⑶输出链表L;

⑷输出L的长度;

⑸判断L是否为空;

⑹输出链表L的第三个元素;

⑺输出元素d的位置;

⑻在第4个位置上插入元素f;

⑼输出链表L;

⑽删除链表的第3个元素;

⑾输出链表L;

⑿销毁链表L;

⒀尾插法建立单链表L,其中L的数据元素值依次为12,56,7,3,89,21,123,20,45,34;

⒁输出单链表L;

⒂将单链表L按数据元素值由小到大排序;

⒃输出排序后新单链表L;

⒄销毁单链表L。

以上为必做题。下面为选做题:

实现:

◆例1:有一个带头结点的单链表head,其ElemType类型为char,

设计一个算法使其元素递增有序。

◆例2:有一个线性表(a1,a2,a3,…,an),采用带头结点的单

链表L存储,设计一个算法将其就地逆置。

◆例3:两个有序链表合并成一个有序链表

例4 Josephus问题: 设有n个人围坐在圆桌周围,现从某个位置s(1≤s≤n)上的人开始报数,报数到m的人就站出来。下一个人,即原来的第m+1个位置上的人,又从1开始报数,再报数到m的人站出来。依次重复下去,直到全部的人都站出来为止。

对于任意给定的n, s和m, 设计算法求出按出列次序得到的n 个人的序列。

四、实验要求

1)单链表的类型定义和基本操作函数声明放在Linklist.h文件;

2)基本操作函数的实现放在单独的Linklist.c文件;

3)测试程序放在LinkListTestApp.c中。

初中物理实验教学计划(含进度表)

物理实验教学计划 一、指导思想: 物理实验是学生进行科学探究的重要方式,实验室则是学生学习和进行实验的主要场所,是物理探究学习的主要资源。因此,学校高度重视物理实验室建设,配置必要的仪器和设备,确保每个学生都能进行实验探究活动,为学生开展实验探究活动创造了良好的条件。 中学物理实验教学的目的与任务即是,通过实验,使学生最有效地掌握进一步学习现代科学技术所必需的基础物理知识,培养初步的实践操作技能和创新能力。教学的重点放在培养学生科学实验能力与提高学生科学实验素养,使学生在获取知识的同时提高自学能力、运用知识的综合分析能力、动手能力和设计创新能力。 初中物理是九年义务教育必修的一门基础课程。根据《九年义务教育全日制初级中学物理教学大纲》和新课程标准,其中要求学生具备的能力之一就是初步的观察、实验能力:能有目的地观察,辩明观察对象的主要特征及其变化条件,能了解实验目的,会正确使用仪器,会作必要的记录,会根据实验结果得出结论,会写简单的实验报告。 实验教学作为物理教学中的一个重要内容和重要手段,因此实验室工作直接关系到物理教学工作是否能顺利进行。因此实验室必须建立和健全科学、规范的管理体制,实行规范的管理。 二、具体工作计划: 1、制订规章制度,科学规范管理 2、按照学校各类规章制度,并认真执行。 3、制订学期实验计划表、周历表。 4、开齐各类实验,并积极创造条件改演示实验为分组实验,积极服务于教学。 5、充分利用生活中身边的实验器材的作用,结合实验室条件进行分组实验。 6、做好仪器、器材的常规维修和保养工作。 7、做好仪器的借出、归还验收工作。 8、有必要时,可以自制一些教具。 9、做好仪器、器材的补充计划。 10、做好各类台帐的记录工作。结合采用电子档案。 11、结合学校常规管理,保持实验室的常清洁。 三、具体实验安排: 八年级物理上学期实验进度表

《数据结构》实验报告 设计循环单链表

《数据结构》实验报告 1、实验名称:设计循环单链表 2、实验日期: 2013-3-26 3、基本要求: 1)循环单链表的操作,包括初始化、求数据元素个数、插入、删除、取数据元素; 2)设计一个测试主函数实际运行验证所设计循环单链表的正确性。 4、测试数据: 依次输入1,2,3,4,5,6,7,8,9,10,删除5,再依次输出数据元素。 5、算法思想或算法步骤: 主函数主要是在带头结点的循环单链表中删除第i个结点,其主要思想是在循环单链表中寻找到第i-1个结点并由指针p指示,然后让指针s指向a[i]结点,并把数据元素a[i]的值赋给x,最后把a[i]结点脱链,并动态释放a[i]结点的存储空间。 6、模块划分: 1)头文件LinList.h。头文件LinList.h中包括:结点结构体定义、初始化操作、求当前数据个数、插入一个结点操作、删除一个结点操作以及取一个数据元素操作; 2)实现文件dlb.cpp。包含主函数void main(void),其功能是测试所设计的循环单链表的正确性。

7、数据结构: 链表中的结点的结构体定义如下: typedef struct Node { DataType data; struct Node *next; }SLNode; 8、源程序: 源程序存放在两个文件中,即头文件LinList.h和实现文件dlb.cpp。//头文件LinList.h typedef struct Node { DataType data; struct Node *next; }SLNode; void ListInitiate(SLNode **head) //初始化 { *head=(SLNode *)malloc(sizeof(SLNode)); //申请头结点,由head指示其地址 (*head)->next=*head; }

实验二 链表操作实现

实验二链表操作实现 实验日期: 2017 年 3 月 16 日 实验目的及要求 1. 熟练掌握线性表的基本操作在链式存储上的实现; 2. 以线性表的各种操作(建立、插入、删除、遍历等)的实现为重点; 3. 掌握线性表的链式存储结构的定义和基本操作的实现; 4. 通过本实验加深对C语言的使用(特别是函数的参数调用、指针类型的应用)。 实验容 已知程序文件linklist.cpp已给出学生身高信息链表的类型定义和基本运算函数定义。 (1)链表类型定义 typedef struct { int xh; /*学号*/ float sg; /*身高*/ int sex; /*性别,0为男生,1为女生*/ } datatype; typedef struct node{ datatype data; /*数据域*/ struct node *next; /*指针域*/ } LinkNode, *LinkList; (2)带头结点的单链表的基本运算函数原型 LinkList initList();/*置一个空表(带头结点)*/ void createList_1(LinkList head);/*创建单链表*/ void createList_2(LinkList head);/* 创建单链表*/ void sort_xh(LinkList head);/*单链表排序*/ void reverse(LinkList head);/*对单链表进行结点倒置*/ void Error(char *s);/*自定义错误处理函数*/ void pntList(LinkList head);/*打印单链表*/ void save(LinkList head,char strname[]);/*保存单链表到文件*/

实验计划进度表

九年级化学实验教学计划 化学是一门以实验为基础的学科。实验教学可以激发学生学习化学的兴趣,帮助学生形成概念,获得知识和技能,培养观察和实验能力,还有助于培养实事求是、严肃认真的科学态度和科学的学习方法。因此,加强实验教学是提高化学教学质量的重要一环。组织和指导学生开展化学课外活动,对于提高学生学习化学的兴趣,开阔知识视野,培养和发展能力,发挥他们的聪明才智等都是很有益的。因此,特制定本化学实验教学计划。 一、指导思想: 培养出来的学生能够适应时代,并使他们在一定程度上能够超越时代,真正能够面向未来,面向现代化,同时在教学过程中,去做学生的贴心人,积极投入到新课程改革的浪潮中去,将新课程的理念贯彻到教学实践中去,注重实验教学,提高学生动手操作能力,要使得学生能在实验中用探究的方法去学习,领会知识的内涵,同时在一定程度上能够学会去发明创造。争取将实验教学工作推上一个新的台阶。 二、实验内容分析: 新课程标准强调科学探究的重要性与有效性,旨在转变学生的学习方式,使学生积极主动地获取化学知识,激发学生亲近化学、热爱化学并渴望了解化学的兴趣,培养他们的创新精神和实践能力,同时,为了突出学生的实践活动,充分发挥化学学科内容特点,重视科学、技术与社会的联系,新教材将原有的部分演示实验和分组实验全部改为“活动与探究”、“家庭小实验”等。这就为学生创造了良好的实验氛围,为他们积极主动地获取化学知识、在实验中切身体会到过程提供了条件。 演示实验有:空气成分的测定、物质的变化、水的组成、氧气和二氧化碳的性质与制法、燃烧的条件等。这些实验有助于研究基本概念、基本理论,同时,也有助于学生养成良好的实验习惯、掌握一定的实验方法并形成严谨的科学态度和求实的精神。 活动与探究有:探究蜡烛及蜡烛燃烧时的变化;探究吸入的空气和呼出的气体有什么不同;探究氧气的实验室制法;探究实验室中制取二氧化碳的装置;探究质量守恒定律;探究燃料燃烧的条件等;通过这些实验,让学生从实验成果中体会到实验是进行科学探究的重要手段,让学生体会到实验基本操作技能在完成一定的实验过程所起的重要作用,从而增强学生对实验的认识并提高实验中掌握基本操作技能的科学自觉性、积极性和主动性。 三、实验目标: 化学实验是进行科学探究的重要手段,学生具备基本的化学实验技能是学习化学和进行科学探究的基础和保证,化学课程要求学生遵守实验室的规则,初步形成良好的实验工作

链表实验报告

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.学会定义单链表的结点类型,实现对单链表的一些基本操作和具体 的函数定义,了解并掌握单链表的类定义以及成员函数的定义与调用。 2.掌握单链表基本操作及两个有序表归并、单链表逆置等操作的实现。二实验要求 1.预习C语言中结构体的定义与基本操作方法。 2.对单链表的每个基本操作用单独的函数实现。 3.编写完整程序完成下面的实验内容并上机运行。 4.整理并上交实验报告。 三实验内容 1.编写程序完成单链表的下列基本操作: (1)初始化单链表La。 (2)在La中第i个元素之前插入一个新结点。 (3)删除La中的第i个元素结点。 (4)在La中查找某结点并返回其位置。 (5)打印输出La中的结点元素值。 2 .构造两个带有表头结点的有序单链表La、Lb,编写程序实现将La、 Lb合并成一个有序单链表Lc。 合并思想是:程序需要3个指针:pa、pb、pc,其中pa,pb分别指向La表与Lb表中当前待比较插入的结点,pc 指向Lc表中当前最后一个结点。依次扫描La和Lb中的元素,比较当前元素的值,将较小者链接到*pc 之后,如此重复直到La或Lb结束为止,再将另一个链表余下的内容链接到pc所指的结点之后。 3.构造一个单链表L,其头结点指针为head,编写程序实现将L逆置。 (即最后一个结点变成第一个结点,原来倒数第二个结点变成第二个结点,如此等等。) 四思考与提高 1.如果上面实验内容2中合并的表内不允许有重复的数据该如何操作? 2.如何将一个带头结点的单链表La分解成两个同样结构的单链表Lb,Lc,使得Lb中只含La表中奇数结点,Lc中含有La表的偶数结点?

数据结构实验报告单链表

数据结构实验报告单链 表 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

2016级数据结构实验报告 实验名称:实验一线性表——题目1 学生姓名:李文超 班级: 班内序号: 15 学号: 47 日期: 2016年11月13日 1.实验要求 实验目的: 根据线性表的抽象数据类型的定义,选择下面任一种链式结构实现线性表,并完成线性表的基本功能。 线性表存储结构(五选一): 1、带头结点的单链表 2、不带头结点的单链表 3、循环链表 4、双链表 5、静态链表 线性表的基本功能: 1、构造:使用头插法、尾插法两种方法 2、插入:要求建立的链表按照关键字从小到大有序

3、删除 4、查找 5、获取链表长度 6、销毁 7、其他:可自行定义 编写测试main()函数测试线性表的正确性。 2.程序分析 存储结构 单链表的存储: (1)链表用一组任意的存储单元来存放线性表的结点。这组存储单元既可以是连续的,也可以是不连续的,甚至零散地分布在内存的某些位置。 (2)链表中结点的逻辑次序和物理次序不一定相同。为了能正确表示结点间的逻辑关系,在存储每个元素值的同时,还要存储该元素的直接后继元素的位置信息,这个信息称为指针或链。 结点结构 ┌──┬──┐ data域---存放结点值的数据域 │data│next│ next域---存放结点的直接后继的地址的指针域└──┴──┘? 单链表在内存中的存储示意 地址内存单元

1000H 头指针 1020H 1080H 10C0H ………… 关键算法分析 1、关键算法: (1)头插法 自然语言描述: a:在堆中建立新结点 b:将a[i]写入到新结点的数据域 c:修改新结点的指针域 d:修改头结点的指针域。将新结点加入链表中 伪代码描述 a:Node * s=new Node b:s->data=a[i] c:s->next=front->next; d:front->next=s (2)尾插法 自然语言描述: a:在堆中建立新结点:

单链表实验报告

计算机与信息技术学院综合性、设计性实验报告 一、实验目的 (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

实验二 单链表的基本算法

实验二单链表的基本算法一.实验目的: 通过上机编程掌握 1.生成单链表的基本算法; 2.在单链表上的插入、删除运算。 二.实验要求: 1. 给出程序设计的基本思想、原理和算法描述。 2. 画出程序流程图;根据数据结构有关知识编出算法程序; 3. 源程序给出注释; 4. 保存和打印出程序的运行结果,并结合程序进行分析。 三.实验内容: 1.编写函数实现单链表的基本运算: (1)单链表的生成 (2)单链表的插入 (3)单链表的删除 2.编写主函数测试单链表的各种基本运算: (1)生成一个至少包含有5个元素的单链表,元素值由计算机输入 (2)在表中的第5个位置上插入元素”7” (3)删除表中的第6个元素 (4)显示(1)—(3)每一步的操作结果

实验原理:首先建立头结点,形成一个单链表,通过malloc函数创建新的结点单元,将要读取的数据赋值给新结点。其次插入链表,从头结点开始依次延指针域查找需要插入的结点,为插入数据元素x生成一个新结点s,将x插入在s和s-1之间。最后链表结点删除,找到指定结点的前趋结点通过改变连接完成删除。 源程序: #include #include typedef int datatype; typedef struct node/*结构体更名为NODE*/ { datatype data; struct node *next; }NODE; NODE *creatlink() /*建立带头结点的单链表*/ { NODE *head,*s ,*p; int x; head=(NODE*)malloc(sizeof(NODE)); /*生成一个NODE型新结点并赋值给head*/ p=head; scanf("%d",&x); while(x!=0) { s=(NODE*)malloc(sizeof(NODE)); /*生成一个NODE型新结点并赋值给s*/

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

. 实验一、单链表的插入和删除 一、目的 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。 二、要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。 三、程序源代码 #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); //删除所有结点,释放内存 } //==========用尾插入法建立带头结点的单链表

链表实验报告

链表实验报告

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

《数据结构》实验报告二 系别:嵌入式系统工程系班级:嵌入式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

实验计划和进度

2011-2012学年度第一学期物理实验教学计划 黑城中学 物理学是一门以观察和实验为基础的自然科学。其一切现象和规律都源于生活、生产实践之中,所有新颖有趣的实验和新奇美妙的现象都能引起学生的兴趣,激发学生的求知欲,是引导学生探索物理规律,学好物理知识的重要方法。为更好地实施实验教学,现做计划如下: 一、指导思想: “实验是科学之父”,“兴趣是最好的老师”。要培养具有高素质的人才,成为跨世纪的建设者和接班人,就要求教育不脱离社会生产和实践活动,而有效地利用好现有的教学手段,进而培养学生的实践能力是不容忽视的,实验室就是为了学生们提供良好的教学实践的基地。 二、实验目的: 对学生进行物理学基本技能的训练和能力培养。 物理学是一门实验科学,实验操作、观察物理现象、数据的记录和处理等在物理教学中占有十分重要的地位,这些教学对于培养学生学习物理学的兴趣,更深入地掌握理解物理学基础知识,掌握实验基本技能,发展他们的智力和培养能力,都有重要作用。教师一定要积极创造条件,尽可能让学生亲自动手、多实践,教会学生观察和操作等技能。通过教学的各个环节和课外活动,努力培养学生的自学能力、观察能力和分析能力,科学地分析和解释一些物理现象。

三、政治思想教育: 通过实验课的教学手段,使学生受到辩证唯物主义和爱国主义教育,初步建立物理学的基本观点,培养实事求是的科学态度,不断探求新知识的精神,逐渐形成正确的审美观、人生观,高尚的品德和情操。 四、实验室的管理制度: 加强实验室的教学管理是搞好实验的关键,制度就是准则,也是胜利的保障。 1、实验室仪器要登记记录簿。 2、实验室物品要登记上簿。 3、学生分组实验要有记录,并列表计划上墙。 4、演示实验的计划。 5、借还仪器有记录。 6、仪器损坏有记录,并按情节轻重赔偿。 7、要有试验报告单,如任课老师上实验课所用仪器、药品等预先通知实验员准备实验仪器及用具,清点清楚交给任课教师,实验完毕后,清点好入库。每次试验结束后都要彻底清扫一次卫生,保持室内清洁干净。 通过认真记录便于掌握实验情况,以总结经验教训,推进实验教学的进一步向更高的层次发展,提高实验的效率。

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)

链表基本操作实验报告

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

...... 2.单链表插入

s 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.清空单链表 五、实验体会 经过这次单链表基本操作实验,自己的编程能力有了进一步的提高,认识到自己以前在思考一个问题上思路不够开阔,不能灵活的表达出自己的想法,虽然在打完源代码之后出现了一些错误,但是经过认真查找、修改,最终将错误一一修正,主要是在写算法分析的时候出现了障碍,经过从网上查找资料,自己也对程

单链表基本操作实验

实验2 链表的操作 实验容: 1)基础题:编写链表基本操作函数,链表带有头结点 (1)CreatList_h()//用头插法建立链表 (2)CreateList_t()//用尾插法建立链表 (3)InsertList()向链表的指定位置插入元素 (4)DeleteList()删除链表中指定元素值 (5)FindList()查找链表中的元素 (6)OutputList()输出链表中元素 2)提高题: (1)将一个头节点指针为heada的单链表A分解成两个单链表A和B,其头结点指针分别为heada和headb,使得A表中含有原单链表A中序号为奇数的元素,B表中含有原链表A中序号为偶数的元素,且保持原来的相对顺序。 (2)将一个单链表就地逆置。 即原表(a1,a2,。。。。。。 an),逆置后新表(an,an-1,。。。。。。。a1) /* 程序功能 :单链表基本功能操作 编程者 :天啸 日期 :2016-04-14 版本号 :3.0 */ #include #include typedef struct List { int data; struct List *next; }List; void CreatList_h(List *L) //头插法 { int i = 0; int n = 0; int goal; List *p; printf("请输入数据的个数:\n"); scanf("%d",&n); L -> next = NULL; for(i=0;i

{ printf("请输入第%d个数:\n",i+1); scanf("%d",&goal); p = (struct List*)malloc(sizeof(struct List)); p -> data = goal; p -> next = L->next; //将L指向的地址赋值给p; L -> next = p; } } void CreateList_t(List *L) //尾插法 { int i; int n; int goal; List *p; List *q=L; printf("请输入数据的个数:\n"); scanf("%d",&n); for (i=0;i data = goal; q -> next = p; q = p; } q -> next = NULL; } void InsList(List *L,int i,int e) //插入 { List *s; List *p = L; int j = 0; while (p&&jnext; ++j; } s = (struct List*)malloc(sizeof(struct List)); s -> data = e; //插入L中

实验小学足球教学计划进度表.docx

一、校园足球教学基本要求 (一)小学阶段 表1小学一年级校园足球教学基本要求(以40 课时为例) 学习内容 学习目标课时(%)教学要点类别内容 1. 参与足球游戏游戏比赛足球游戏、足球比赛16(40) 1. 以游戏法为主要教和比赛,培养球学方法。 感。 8(20)2. 以比赛培养学生对 球感踩球、拉球、拨球、跨球足球的兴趣。 2. 体验足球活动 的乐趣。 脚背外侧运球4(10) 技术 脚内侧踢球、接球8(20) 知识足球故事4(10) 身体素质柔韧性、灵敏性、协调性、反应能力—— 表 2小学二年级校园足球教学基本要求(以40 课时为例) 学习内容 学习目标课时( %)教学要点类别内容 1. 学习运球、踢游戏比赛足球游戏、足球比赛16(40) 1. 以游戏法为主要教球、接球等基本学方法。 技术动作,培养 2. 以比赛培养学生对球感。球感踩球、拉球、拨球、扣球、跨球8(20)足球的兴趣。 2. 体验足球活动 的乐趣。 脚内侧、脚背正面运球6(15) 技术 脚内侧踢球、接球、脚底接球6(15) 知识足球基础知识4(10) 身体素质柔韧性、灵敏性、协调性、反应能力——

表 3小学三年级校园足球教学基本要求(以40 课时为例) 学习目标 1.乐于学习和展示简单的足球动作。 2.初步掌握简单的足球组合技术。 3.培养相互配合的合作意识。 学习内容 课时( %) 类别内容 游戏比赛足球游戏、足球比赛12(30) 球感踩球、拉球、拨球、扣球、跨球、挑球、颠球4(10) 脚内侧、脚背正面、脚背外侧运球4(10) 技术脚背内侧踢球6(15) 运球、传球、接球组合6(15) 战术 2 过 1 4 (10) 知识足球比赛方法 4 (10) 身体素质柔韧性、灵敏性、协调性、平衡能力—— 教学要点 1.游戏法与比赛 法相结合。 2.注重学生球感的培 养。 3.注重学生技术运用 的合理性。

链表基本操作实验报告记录

链表基本操作实验报告记录

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

实验2链表基本操作实验 一、实验目的 1.定义单链表的结点类型。 2.熟悉对单链表的一些基本操作和具体的函数定义。 3.通过单链表的定义掌握线性表的链式存储结构的特点。 二、实验内容与要求 该程序的功能是实现单链表的定义和主要操作。如:单链表建立、输出、插入、删除、查找等操作。该程序包括单链表结构类型以及对单链表操作的具体的函数定义和主函数。程序中的单链表(带头结点)结点为结构类型,结点值为整型。 要求: 同学们可参考指导书实验2程序、教材算法及其他资料编程实现单链表相关操作。必须包括单链表创建、输出、插入、删除操作,其他操作根据个人情况增减。 三、算法分析与设计。 1.创建单链表: LinkedList LinkedListCreat( ) 创建链表函数 LinkedList L=LinkedListInit(),p, r; 调用初始化链表函数 r=L; r指向头结点 使用malloc函数动态分配存储空间,指针p指向新开辟的结点,并将元素存 放到新开辟结点的数据域, p=(LinkedList)malloc(sizeof(LNode)); p->data=x; r->next=p; 将新的结点链接到头结点r之后 r=p; r指向p结点 scanf("%d",&x); 满足条件循环输入链表元素 while(x!=flag) 当输入不为-1时循环 r->next=NULL; return L; 将链表结尾赋空值,返回头结点L 头结点L L ...... ^ ^ An A1 A2

单链表 队列 数据结构实验报告 及结果

#include #define NULL 0 typedef struct lnode { int data; struct lnode *next; } linklist; linklist *create(void) { linklist *head,*p1,*p2; int n; n=0; p1=p2=(linklist *)malloc(sizeof(linklist)); printf("\n\n input datas:"); scanf("%d",&p1->data); head=NULL; while (p1->data!=0) { n=n+1; if(n==1) head=p1; else p2->next=p1; p2=p1; p1=(linklist *) malloc(sizeof(linklist)); scanf("%d",&p1->data); } p2->next=NULL; return head; } void chaxun(linklist *head,int x) { linklist *p1=head; int i=0; while(p1->data!=x&&p1!=NULL) { p1=p1->next; i=i+1; } if(p1!=NULL) printf("\n the position is:%d",i+1); else printf("\n x is not been found"); } linklist *insert (linklist *head,linklist *stud)

{ linklist *p1,*p2,*p0; p1=head;p0=stud; if(head==NULL) { head=p0; p0->next=NULL; } else { while ((p0->data>p1->data)&&(p1->next!=NULL)) { p2=p1; p1=p1->next; } if(p0->datadata) { if(head==p1) head=p0; else p2->next=p0; p0->next=p1; } else { p1->next=p0; p0->next=NULL; } } return head; } linklist *del (linklist *head,int num) { linklist *p1,*p2; if(head==NULL) {printf("\n listnull!\n"); return head;} p1=head; while (num!=p1->data&&p1->next!=NULL) {p2=p1;p1=p1->next;} if(num==p1->data) {if (p1==head) head=p1->next; else p2->next=p1->next; printf("\n deletse:%d\n",num); return head; } } void prinf(linklist * head)

数据结构-单链表实验报告

单链表实验报告 一、实验目的 1、帮助读者复习C++语言程序设计中的知识。 2、熟悉线性表的逻辑结构。 3、熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉链表的操作为侧重点。 二、实验内容 [问题描述] 实现带头结点的单链表的建立、求长度,取元素、修改元素、插入、删除等单链表的基本操作。 [基本要求] (1)依次从键盘读入数据,建立带头结点的单链表; (2)输出单链表中的数据元素 (3)求单链表的长度; (4)根据指定条件能够取元素和修改元素; (5)实现在指定位置插入和删除元素的功能。 三、算法设计 (1)建立带表头结点的单链表;首先输入结束标志,然后建立循环逐个输入数据,直到输入结束标志。 (2)输出单链表中所有结点的数据域值;首先获得表头结点地址,然后建立循环逐个输出数据,直到地址为空。 (3)输入x,y在第一个数据域值为x的结点之后插入结点y,若无结点x,则在表尾插入结点y;建立两个结构体指针,一个指向当前结点,另一个指向当前结点的上一结点,建立循环扫描链表。当当前结点指针域不为空且数据域等于x的时候,申请结点并给此结点数据域赋值为y,然后插入当前结点后面,退出函数;当当前结点指针域为空的时候,申请结点并给此结点数据域赋值为y,插入当前结点后面,退出函数。 (4)输入k,删除单链表中所有的结点k,并输出被删除结点的个数。建立三个结构体指针,一个指向当前结点,另一个指向当前结点的上一结点,最后一个备用;建立整形变量l=0;建立循环扫描链表。当当前结点指针域为空的时候,如果当前结点数据域等于k,删除此结点,l++,跳出循环,结束操作;如果当前结点数据域不等于k,跳出循环,结束操作。当当前结点指针域不为空的时候,如果当前结点数据域等于k,删除此结点,l++,继续循环操作;如果当前结点数据域不等于k,指针向后继续扫描。循环结束后函数返回变量l的值,l便是删除的结点的个数。

单链表实验报告

单链表实验报告

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

计算机与信息技术学院综合性、设计性实验报告 专业:网络工程年级/班级:大二 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

相关文档