软件技术基础实验指导书2010.3
- 格式:pdf
- 大小:129.24 KB
- 文档页数:14
《软件技术基础》实验指导书电子商务教研室2009年9月实验三队列的应用◆实验目的与基本要求1、掌握队列的顺序存储和链式存储结构。
2、掌握队列的特点。
3、掌握队列的基本运算。
◆实验条件1、硬件:一台微机2、软件:操作系统和C语言系统◆实验方法确定存储结构后,上机调试实现队列的基本运算。
◆实验内容1、写出队列的出队和入队算法。
2、设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚,依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已停放n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。
编制一个程序模拟该停车场的管理。
◆性质:必做◆类型:验证◆2h队列是从日常排队现象抽象出来的一种数学模型。
当然数据结构中的队列远没有生活中的排队灵活。
数据结构中的队列规定:数据只能从队尾进,从队首出来。
已经进入队列的数据次序不能再做改变。
这就叫做“先进先出”(FIFO)或者说“后进后出”(LILO)。
允许插入的一端称为队尾,通常用一个称为尾指针(rear)的指针指向队尾元素,即尾指针总是指向最后被插入的元素;允许删除的一端称为队首,通常也用一个队首指针(front)指向队首元素的前一个位置(当然也可以直接指向队首元素,只是许多数据结构的书上都习惯这么定义)。
与队列类似,我们可以用一维数组来模拟队列这种数据结构,也可以用链表来模拟。
根据以上描述,队列可以可以有以下基本操作:1、创建初始化:按约定置队列为空状态。
实验3查找和排序1.实验目的·掌握常用查找算法的基本实现方式;·掌握常用排序算法的基本实现方式;·熟悉各种查找和排序算法的优缺点与适用范围。
2.实验内容与要求以学生成绩为数据元素建立顺序表。
一个学生的信息包括学号、姓名以及成绩。
程序中预定义了十位同学的成绩,这些记录按学号有序。
用户可通过数字键选择信息查找及排序功能。
对程序的具体要求如下:(1)程序启动后,显示下列选项信息:1—查找 2—排序 0—退出(2)输入数字“1”进入查找区。
进一步显示下列选项信息:4—顺序查找 5—折半查找 6—退出查找①输入数字“4”,程序提示由用户输入学号,然后按学号进行顺序查找并显示结果。
②输入数字“5”,程序提示由用户输入学号,然后按学号进行折半查找并显示结果。
③输入数字“6”退回上一层选项菜单。
(3)输入数字“2”进入排序区。
进一步显示下列选项信息:7—插入排序 8—选择排序 9—冒泡排序 10—退出排序①输入数字“7”,程序按成绩进行插入排序并显示结果。
②输入数字“8”,程序按成绩进行选择排序并显示结果。
③输入数字“9”,程序按成绩进行冒泡排序并显示结果。
④输入数字“10”,程序退回上一层选项菜单。
(4)通过输入数字“0”使得程序结束。
当用户执行查找或排序功能时,若用户未选择“6”或“10”选项退回上一层菜单,则程序继续在查找区或排序区循环。
3.实验报告要求同实验一提示:#include "stdio.h"#include "stdlib.h"#include "conio.h"#include "malloc.h"#define N 50 #define MaxLength 50#define MaxSize 100#define MAX 11typedef struct RedType{ int id;char name[8];float score;}elemnode[N];typedef struct {elemnode node; int length;}SeqList;void Sort(SeqList * s);void Search(SeqList * s);int Search_Bin(SeqList * s,int key);//折半查找int Search_Seq(SeqList * s,int key);//顺序查找void InsertSort(SeqList * s); //插入排序 void BubbleSort(SeqList * s); //冒泡排序void SelectSort(SeqList * s); //选择排序void main(){char c; SeqList seq={1,"张三",56,2,"李四",89,3,"王五",77,4,"赵六",68};seq.length=4; while(1){printf(" 1-查找 2-排序 0-退出\n");c=getch();switch(c){case '1': Search(&seq); break;case '2': Sort(&seq);break;case '0':exit(0);}}}void Search(SeqList *s){char c;int loc;int num;while(1){printf(" 4-顺序查找 5-折半查找 6-退出查找\n");c=getch();switch(c){case '4':printf("请输入要查找的学号:");scanf("%d",&num);loc=Search_Seq(s,num); break;case '5':printf("请输入要查找的学号:");scanf("%d",&num);loc=Search_Bin(s,num); break;case '6':return;}if (loc!=-1){printf("你查到的结果为:\n");printf("学号:%d,姓名:%s,成绩:%f\n",s->node[loc].id,s->node[loc].name,s->node[loc].score);}Else printf("你查找的学号不存在!\n"); }}int Search_Bin(SeqList *s , int Key){int low,high,mid;low=0;high=s->length-1;while(low<=high){mid=(low+high)/2; if(Key==s->node[mid].id) return mid;else if(Key<s->node[mid].id) high=mid-1; else low=mid+1; }return -1; }int Search_Seq(SeqList *s,int key){ int i; for(i=0;i<s->length-1;i++) if (s->node[i].id==key) return i; return -1;}void Sort(SeqList *s){}实验4 数据库的建立和操作1.实验目的:1.掌握SQL SERVER数据库的基本操作;掌握数据库管理系统的设计方法2.了解关系数据库标准语言—SQL。
前言一、实验目的《计算机软件技术基础》是一门实践性非常强的课程。
要获得利用计算机、编写程序解决实际问题的能力,仅靠习读教材和听课是不够的,还有一个重要的环节是亲自在计算机上实践。
计算机软件技术基础实验教学能够培养学生理论联系实际的学风,培养学生研究问题和解决问题的能力,培养学生的创新能力和协作精神,提高学生编写程序解决实际问题的能力。
通过该课程的实验环节,训练学生的编程技能,使学生学会运用所学理论知识判断和解决实际问题,加深和扩大理论知识;学会使用C、VC++等常用的编程软件;能根据要求建立实际问题的数学模型,确定求解方法,画出程序方框图,编写程序;学会使用各种调试命令来分析并排除程序中的错误;能运用理论知识对实验现象、结果进行分析和处理。
二、实验前预习每次实验前,学生须仔细阅读本实验指导书的相关内容,明确实验目的、原理和步骤;认真阅读程序,并尝试画出程序方框图;复习与实验内容有关的理论知识;预习C、VC++编程软件的使用方法。
三、实验注意事项1.实验开始前,应先检查计算机是否工作正常,是否安装了需要的软件。
2.按照实验步骤做实验,在计算机上认真输入编好的程序并保存。
3.程序编写完后,仔细检查是否存在书写错误。
4.确定程序书写无误后,编译并连接程序。
若出现错误,则修改程序直到无语法错误。
5.利用调试工具查找程序中的逻辑错误,并进行排除。
6.运行程序,观察结果并保存或记录。
7.实验结束后,应关闭计算机,清理实验桌面。
9.爱护公物,发生仪器设备等损坏事故时,应及时报告指导教师,按有关实验管理规定处理。
10.自觉遵守学校和实验室管理的其它有关规定。
四、实验总结每次实验后,应对实验进行总结,即实验结果进行整理,撰写实验报告。
实验报告除写明实验名称、日期、实验者姓名外,还包括:1.实验目的;2.实验设备;3.实验内容;4.实验步骤;5.实验结果;6.心得体会。
目录目录 (1)实验一VC++软件的熟悉与使用 (3)实验二顺序存储线性表的基本运算 (11)实验三单向链表的基本操作 (15)实验四迷宫实验 (21)实验五二叉树的存储及遍历 (28)实验六图的单源最短路径 (32)实验七排序实验 (37)实验一VC++软件的熟悉与使用一、实验目的1、熟悉VC++控制台程序的建立、编辑、编译、运行步骤。
《软件工程》实验指导书一、基本目的:1.使学生把软件工程的基本原理和技术应用于实践。
2.使学生掌握实际大型软件的开发过程和组织方式。
3.使学生增强开发大型软件的能力。
二、实验环境:文档制作工具为WORD、EXCEL、VISIO、ROSE 等,编程环境自选。
三、背景知识:从理论上而言,软件生存期一般都可分为计划、需求分析、设计、编码、测试、运行维护六个步骤。
根据软件工程实施过程中的各阶段活动,我们可以把它归结为不同的软件生存期模型,并归结出每一阶段的实施的行为特征。
在软件工程的实施过程中,需要制做相应的文档。
1.计划阶段计划阶段指技术人员辅助管理人员或市场部人员根据项目意向,做出初步需求调查、进行可行性论证,在论证通过后做系统方案,如委托开发,还需签定项目开发合同,并制定项目开发计划。
2.需求分析阶段需求分析阶段,管理人员提出需求分析阶段计划,分析人员制作软件需求说明书,包括软件需求子系统需求说明书、数据要求说明书、子系统数据要求说明书、系统数据流图、子系统数据流图及其相应的词典。
系统需求说明书完成后应通过项目需求评审,经用户确认后出具需求分析验收报告。
初步制定测试计划。
3.设计阶段在设计阶段需要制定系统实现方案,设计阶段计划,填写数据库设计说明书、详细设计说明书,详细设计应通过详细设计评审、出具详细设计验收报告,设计阶段完成后应开始制做用户手册、管理员手册、测试计划与测试案例设计。
4.编码阶段在编码阶段应有数据库编程规范、编程语言编程规范、内部公用函数(模块)目录等。
设计和执行模块测试。
5.测试阶段设计完成后,就应该进入测试阶段,测试阶段中,应该制定测试规范、填写测试计划与测试说明,测试过程中应填写软件测试报告。
6.运行维护阶段测试阶段完成后,应进行系统交付,进入运行维护阶段。
系统维护阶段,用户发现问题时,应填写计算机软件问题报告单,提交信息部主管或根据合同约定向设计单位提交。
四、实验要求:每班分为5-6个小组,每组从实验题目中任选一题,也可自选题目作为课程实践题目。
《计算机软件技术基础》实验指导书编写:XXX适用专业:电器工程与自动化通讯工程电子信息工程安徽建筑工业学院电子与信息工程学院2007年9月实验一:线性链表的建立、查找、插入、删除实验实验学时:2实验类型:验证实验要求:必修一、实验目的通过本实验的学习,要求学生能够通过单链表的存储结构,掌握单链表的基本操作,包括单链表的建立、查找、插入、删除、输出等操作。
通过本实验可以巩固学生所学的线性表知识,提高编程能力,为后继课程的学习奠定基础。
二、实验内容1、为线性表{10,30,20,50,40,70,60,90,80,100}创建一个带头结点的单链表;2、在该链表上查找值为50,65的结点,并返回查找结果(找到:返回在县新链表中的位置);3、在该链表上值为50的结点后,插入一个值为120的结点;4、删除该链表上值为70的结点。
写出各操作的实现函数,并上机验证。
三、实验原理、方法和手段使用带头结点的单链表的表示线性表,通过实验,熟悉链表的创建、查找、插入、删除、输出等是链表的基本操作。
具体如下:(1)首先定义单链表的节点结构;(2)在单链表创建过程中,首先初始化一个带头结点的空链表,对线性表中的各元素依次通过键盘输入、建立该元素结点、插入到单链表中,实现单链表的创建过程;结点的插入有头插入和尾插入两种方法,采用不同方法时应注意元素的输入顺序。
(3)查找过程可以从头结点开始,将待查找的数据依次与每个结点的数据域比较,匹配及查找成功,弱链表访问完未找到匹配的元素,则查找不成功。
为能够返回查找成功的结点位置,在链表的搜索过程中,应设置一个计数器,记录搜索结点的序号;(4)插入结点时,首先要通过查找算法,找到带插入结点的前驱结点,然后为带插入元素建立结点,通过指针的修改,将结点插入。
(5)删除结点时,首先要通过查找算法,找到待删除结点的前驱,然后通过指针的修改,将待删除结点从链表中卸下,释放该结点。
(6)以上操作的正确性,均可以通过链表的输出结果来验证。
《软件技术基础》课程实验指导书实验环境:C/C++语言编程Turbo C3.0 / Visual C++6.0 一、实验内容二、实验指导实验一单链表的操作一、实验目的1.掌握线性表的链式存储结构(1)线性表的链式存储原理(2)链式存储结构的优缺点2.掌握结构体的应用以及数据结点的生成(1)结构体的定义(2)动态存储分配函数的使用(3)强制类型转换的方法3.掌握指针的应用(1)巩固指针的含义和用法(2)结构体指针的使用二、预习要求1.复习C语言(1)巩固C语言程序设计的基本方法(2)巩固在TC或VC环境中编写和调试C程序2.复习指针和结构体两部分的知识(1)巩固指针的含义以及定义方式(2)理解结构体的定义以及其成员的赋值和引用3.理解课本关于单链表部分的知识(1)掌握单链表的生成原理和过程(2)在草稿纸上画出简单程序流程图三、实验内容1.通过C语言编程,用函数实现不低于五个结点的单链表的建立:(1)要求编写功能函数实现单链表的建立;(2)链表中结点的数据类型为任意原子类型,以下参考算法假设的是整型;(3)采用循环结构建表,请同学自定义循环结束标志,以下是次数循环,同学们可设计为输入某个键值结束,如数字‘-1’结束;(4)编写访问各结点的算法,把建成的单链表顺序输出。
2.实现单链表的插入和删除算法。
3.编写主函数调用以上各算法函数,调试并运行整个程序,分析运行结果。
四、 实验原理1.尾插法建立单链表(1)算法原理:从一个空表开始,循环读入数据,生成新结点,将读入数据存放在新结点的数据域中,然后将新结点插入到当前链表的表尾上,直到循环结束为止。
(2)算法示意图如下,若要建立L=(1,2,3,4,5)的单链表,则链表结构为:(3)算法描述: //结点结构体定义 struct node {int data;struct node *next; };//尾插法建立n 个结点的单链表Lstruct node* CreateList(struct node *L,int n) {int i; int x;struct node *p,*q;L=(struct node *) malloc(sizeof(struct node)); L->data=n; L->next=NULL; q=L;for(i=n;i>0;i--){p=(struct node *) malloc(sizeof(struct node)); scanf("%d",&x); p->data=x; q->next=p; p->next=NULL; q=p; }return L; }2. 单链表的访问从头节点开始,依次输出每个节点的值。
计算机软件技术基础实验指导书实验报告要求:1.手写报告2.统一封皮(封皮填写相应内容)3.包括内容1)实验题目2)实验内容和要求3)源程序(必要的注释)4)调试过程5)运行结果6)实验心得实验一多项式的链表表示及运算一、实验目的掌握多项式的链表表示及运算方法。
二、实验内容设有多项式A(x)=7+3x+9x8+3x15B(x)=5x+6x7-9x8(1)用单链表给出A(x)的存储表示;(2)用单链表给出B(x)的存储表示;(3)以上述两个单链表为基础,通过插入和删除等运算给出A(x)+B(x)的存储表示,使其存储空间覆盖A(x)和B(x)的存储空间。
三、实验要求上述A(x),B(x)的每项系数和指数均须从键盘输入, A(x)+B(x)每项系数和指数输出到屏幕。
实验二二叉树的生成与遍历一、实验目的熟悉二叉树的二叉链表表示法,掌握使用递归方法实现二叉树的三种遍历的算法。
二、实验内容图a生成如图a所示二叉树的二叉链表,并以前序、中序、后序遍历输出。
实验三 图的表示及其遍历一、 实验目的掌握图的两种存储方式,会编程实现二叉图的两种遍历算法。
二、 实验内容1.生成所示图的邻接表2.对其进行深度优先搜索 和广度优先搜索。
实验四 查找方法比较 一、 实验目的熟悉并掌握顺序,折半,二叉排序树查找的原理及其算法。
二、 实验内容题目1 顺序与折半查找分别采用顺序查找和折半查找的算法在顺序表 (11,21,31…,91,101) 中查找元素b 。
若查找成功,输出success !及该元素的序号;若查找失败,输出fail!。
要求:1)元素b 从键盘输入;2)输出查找的过程及比较次数,比较两种查找算法的效率。
题目2 二叉排序树查找按元素在表中的顺序生成序列(45,24,53,13,30,85)的二叉排序树,并查找元素b 。
如果查找成功,输出success !;否则,输出fail!。
要求:1)元素b 从键盘输入; 2)中序遍历该二叉树。
《软件技术基础》课程设计项目实战任务书指导书胡永祥编江苏财经职业技术学院2011年5月前言《软件技术基础》是高职高专计算机软件技术、计算机应用技术、计算机网络技术、应用电子技术等专业的一门专业基础课,其特点是应用广泛,实践性较强。
通过课程设计,可使学生进一步掌握C语言程序设计的基本知识,增强学生利用C语言进行程序设计的实践技能,培养学生综合运用相关知识的能力。
一、项目实战的任务和性质1、巩固对所学C语言程序设计基本知识的掌握2、增强学生利用C语言程序设计的实践技能3、培养学生独立分析和解决问题的能力4、培养学生综合运用所学知识解决实际问题的能力二、项目实战的基本要求1、进一步掌握C语言程序设计方法和组织实现的基本技能2、学会分析解决问题的方法,对设计中出现的问题,能通过独立思考、查阅资料等手段寻找解决问题的途径3、熟悉C语言程序调试的方法,对程序中出现的错误能够独立调试解决4、对设计结果能独立进行分析、评价5、培养严肃认真、实事求是的科学作风三、项目实战内容1、选择、熟悉并适应编程编译、调试环境2、选择并确定设计课题3、审阅所选课题、明确实现的具体方法,确定基本算法和编程方法4、编写程序5、上机调试程序,查错、纠错6、撰写课程设计报告7、准备答辩说明:阅读、分析课程设计实例,有助于理解和把握C语言程序设计的一些基本方法、过程和技巧项目实战任务书一、项目实战题目学生成绩管理系统二、项目实战目的1.进一步掌握和利用C语言进行行程设计的能力2.进一步理解和运用结构化程序设计的思想和方法3.初步掌握开发一个小型实用系统的基本方法4.学会调试一个较长程序的基本方法5.学会利用流程图表示算法6.掌握书写程序设计开发文档的能力(书写课程设计报告)三、项目实战具体内容1.每一条记录包括一个学生的学号、姓名、3门课成绩、平均成绩2. 输入功能:可以一次完成若干条记录的输入3.显示功能:完成全部学生记录的显示4.查找功能:完成按学号查找学生记录并显示5.排序功能:按学生总分进行排序6.插入功能:按学号插入一条学生记录7.将学生记录保存在文件中8.应提供一个菜单来调用各个功能,调用菜单的界面应尽可能清晰美观四、项目实战要求1、用C语言实现系统2、利用结构体链表实现学生成绩的数据结构设计3、系统具有追加,查询,插入,排序等基本功能4、系统的各个功能要求用函数的形式实现5、完成设计任务并书写课程设计报告6、将学生成绩信息存在文件中五、项目实战报告的要求1、目录2、前言3、设计目标4、设计概要(设计思路)5、程序设计(要求一并提交源程序清单及电子文挡)6、测试结果7、结论或体会8、参考文献项目实战指导书一、概要设计1.制作这样的一个数据库需要实现以下功能:(1)数据库的安全性。
说明每个实验题目含有一个main函数和一些函数,与实验题目相关的基本运算的函数定义和main函数定义的代码在附录以及对应的文件夹中给出,供上机实验参考使用。
对于每个题目,只需要根据题目要求设计算法,补充函数定义,然后对程序进行编译、调试。
实验一线性表一、实验目的1.熟悉线性表的顺序和链式存储结构2.掌握线性表的基本运算3.能够利用线性表的基本运算完成线性表应用的运算二、实验内容1.设有一个线性表E={e1, e2, … , e n-1, e n},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ e n , e n-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。
(文件夹:顺序表逆置、单链表逆置)2.已知由不具有头结点的单链表表示的线性表中,含有三类字符的数据元素(字母、数字和其他字符),试编写算法构造三个以循环链表表示的线性表,使每个表中只含有同一类的字符,且利用原表中的结点空间,头结点可另辟空间。
(文件夹:分解单链表)实验二栈和队列一、实验目的1.熟悉栈和队列的顺序和链式存储结构2.掌握栈和队列的基本运算3.能够利用栈和队列的基本运算完成栈和队列应用的运算二、实验内容1.设单链表中存放有n个字符,试编写算法,判断该字符串是否有中心对称的关系,例如xyzzyx是中心对称的字符串。
(提示:将单链表中的一半字符先依次进栈,然后依次出栈与单链表中的另一半字符进行比较。
)(文件夹:判字符串中心对称)2.假设以数组sequ[m]存放循环队列的元素,同时设变量rear和quelen 分别指示循环队列中队尾元素的位置和内含元素的个数。
编写实现该循环队列的入队和出队操作的算法。
提示:队空的条件:sq->quelen==0;队满的条件:sq->quelen==m。
(文件夹:循环队列)实验三串一、实验目的1.熟悉串的顺序存储结构2.掌握串的基本运算及应用二、实验内容1.串采用顺序存储结构,编写朴素模式匹配算法,查找在串中是否存在给定的子串。
目录实验一顺序表的插入、删除 (1)实验二单链表的插入、删除 (4)实验三顺序栈的入栈、出栈 (8)实验四循环队列的入队、出队 (10)实验五稀疏矩阵的转置 (13)实验六二叉排序树的建立、遍历 (15)实验七直接插入排序 (19)实验八直接选择排序 (20)实验九顺序、二分查找 (22)实验十二叉排序树查找 (25)附录实验报告要求 (28)实验一顺序表的插入、删除(2学时)一、实验目的1、理解线性表的顺序存储结构;2、能熟练建立一个顺序表,并能对其进行插入、删除等基本操作;3、能熟练运用宏定义、函数调用。
二、实验内容从键盘输入10个整数,建立一顺序表(顺序表最大长度为20),用顺序表完成在任意一个位置插入任意整数元素以及删除任意位置数据元素的操作(插入、删除位置及要插入元素数值均从键盘输入),进行完任一操作后将顺序表中的内容及表长输出。
三、参考源程序#include <stdio.h>#define MAXLEN 20typedef int elemtype;typedef struct{elemtype List[MAXLEN];int Num;}Seqlist;int insert(Seqlist *la,int i, elemtype x);int del(Seqlist *la,int i);void output(Seqlist *la);main(){Seqlist la;int m,i;elemtype x;la.Num=-1;printf("\nPlease input data:");for(i=0;i<=9;i++){++la.Num;scanf(" %d",&la.List[i]);}printf("Please input the value of m:m=1---insert m=2---delete\nm=");scanf("%d",&m);if(m==1){printf("Please input insert location and insert data:");scanf("%d%d",&i,&x);insert(&la,i,x);output(&la);}else if(m==2){printf("Please input delete location:");scanf("%d",&i);del(&la,i);output(&la);}elseprintf("The value of m is wrong!");}int insert (Seqlist *la,int i, elemtype x){int j;if (i<0||i>la->Num){printf ("\n 插入位置不合理!");return 0;}else if (la->Num==MAXLEN-1){printf ("\n 表满,不能插入!");return 0;}else{for ( j=la->Num; j>=i; j--)la->List[j+1]=la->List[j];la->List[i]=x;la->Num++;return 1;}}int del (Seqlist *la,int i){int j;if (i<0||i>la->Num){printf ("\n the position is invalid");return 0;}else{for ( j=i+1; j<=la->Num; j++)la->List[j-1]=la->List[j];la->Num--;return 1;}}void output(Seqlist *la){int m;printf("当前的线性表为");for(m=0;m<=la->Num;m++)printf(" %d",la->List[m]);printf("\n表长为%d\n",la->Num+1);}四、思考题1.设顺序表L中的数据元素按递增排列,编写一个算法,将数据元素x插入到顺序表L的适当位置上,以保持顺序表的有序性。
目录实验一单链表的生成、插入和删除 (2)实验二二叉树的建立和遍历 (5)实验三二叉排序树的建立和查找 (6)实验四 windows操作系统及应用 (9)实验五数据库设计与应用(一) (10)实验六数据库设计与应用(二) (12)实验一单链表的生成、插入和删除一、实验目的1.掌握单链表的基本操作:建立、插入和删除2.掌握运用C语言上机调试单链表的基本方法。
二、实验环境操作系统和C语言系统三、预习要求了解单链表的建立、插入和删除算法,编写完整的程序。
四、实验内容设计算法,实现线性结构上的单链表的产生以及元素的查找、插入与删除。
具体实现要求:(1)从键盘输入n个整数,以0作为结束标记,产生不带表头的单链表,并输入结点值。
(2)从键盘输入1个整数,在单链表中查找该结点的位置。
若找到,则显示“找到了”;否则显示“找不到”。
(2)从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上,输出单链表所有结点值,观察输出结果。
(4)从键盘输入1个整数,表示欲删除结点的位置,输出单链表所有结点值,观察输出结果。
五、参考算法#include <stdio.h>#include <stdlib.h>/*单链表的定义*/typedef int DataType; /*DataType可以是任何相应的数据类型如int, float或char*/ typedef struct node /*结点类型定义*/{ DataType data; /*结点的数据域*/struct node *next; /*结点的指针域*/}ListNode;typedef ListNode *LinkList;void main(){ int i;DataType key,x;LinkList head;ListNode *p;LinkList CreateList(void);void PrintList(LinkList head);LinkList LocateNode(LinkList head,DataType key);LinkList GetNode(LinkList head,int i);void InsertList(LinkList head,DataType x,int i);void DeleteList(LinkList head,int i);head=CreateList(); /*建立单链表*/PrintList(head); /*打印单链表*/printf("输入要查找的值:");scanf("%d",&key);p=LocateNode(head,key); /*单链表查找*/printf("请输入欲插入元素的位置:");scanf("%d",&i);printf("请输入欲插入的元素:");scanf("%d",&x);InsertList(head,x,i); /*单链表插入*/PrintList(head); /*打印单链表*/printf("请输入欲删除结点的位置:");scanf("%d",&i);DeleteList(head,i); /*单链表删除*/PrintList(head); /*打印单链表*/}/*单链表的建立,从后向前生成*/LinkList CreateList(void){//在此插入必要语句}/*单链表的打印*/void PrintList(LinkList head){//在此插入必要语句}/*单链表的查找,输入一个整数,显示该结点的位置*/LinkList LocateNode(LinkList head,DataType key){/*在不带头结点的单链表head中查找其值为key的结点*///在此插入必要语句}/*单链表的查找2,在不带头结点的单链表head中查找第i个结点*/LinkList GetNode(LinkList head,int i){//在此插入必要语句}/*单链表的插入*/void InsertList(LinkList head,DataType x,int i){/*将值为x的新结点插入到不带头结点的单链表head的第i个结点的位置上*/ //在此插入必要语句}/*单链表的删除,删除不带头结点的单链表中的第i个结点*/void DeleteList(LinkList head,int i){//在此插入必要语句}六、思考题如果生成带头结点的单链表,程序应如何修改?七、实验报告要求具体内容包含以下几项:实验题目、实验目的、实验环境、实验内容与完成情况(要求附上自主设计的源程序)、实验中出现的问题、对问题的解决方案、完成思考题、实验总结等。
《软件工程》实验指导书一、基本目的:1.使学生把软件工程的基本原理和技术使用于实践。
2.使学生掌握实际大型软件的开发过程和组织方式。
3.使学生增强开发大型软件的能力。
二、实验环境:文档制作工具为WORD、EXCEL、VISIO、ROSE 等,编程环境自选。
三、背景知识:从理论上而言,软件生存期一般都可分为计划、需求分析、设计、编码、测试、运行维护六个步骤。
根据软件工程实施过程中的各阶段活动,我们可以把它归结为不同的软件生存期模型,并归结出每一阶段的实施的行为特征。
在软件工程的实施过程中,需要制做相应的文档。
1.计划阶段计划阶段指技术人员辅助管理人员或市场部人员根据项目意向,做出初步需求调查、进行可行性论证,在论证通过后做系统方案,如委托开发,还需签定项目开发合同,并制定项目开发计划。
2.需求分析阶段需求分析阶段,管理人员提出需求分析阶段计划,分析人员制作软件需求说明书,包括软件需求子系统需求说明书、数据要求说明书、子系统数据要求说明书、系统数据流图、子系统数据流图及其相应的词典。
系统需求说明书完成后应通过项目需求评审,经用户确认后出具需求分析验收报告。
初步制定测试计划。
3.设计阶段在设计阶段需要制定系统实现方案,设计阶段计划,填写数据库设计说明书、详细设计说明书,详细设计应通过详细设计评审、出具详细设计验收报告,设计阶段完成后应开始制做用户手册、管理员手册、测试计划和测试案例设计。
4.编码阶段在编码阶段应有数据库编程规范、编程语言编程规范、内部公用函数(模块)目录等。
设计和执行模块测试。
5.测试阶段设计完成后,就应该进入测试阶段,测试阶段中,应该制定测试规范、填写测试计划和测试说明,测试过程中应填写软件测试报告。
6.运行维护阶段测试阶段完成后,应进行系统交付,进入运行维护阶段。
系统维护阶段,用户发现问题时,应填写计算机软件问题报告单,提交信息部主管或根据合同约定向设计单位提交。
四、实验要求:每班分为5-6个小组,每组从实验题目中任选一题,也可自选题目作为课程实践题目。
《计算机软件技术基础》实验指导书编写:张霖邱述威适用专业:电器工程与自动化通讯工程电子信息工程安徽建筑工业学院电子与信息工程学院2007年9月实验一:线性链表的建立、查找、插入、删除实验实验学时:2实验类型:验证实验要求:必修一、实验目的通过本实验的学习,要求学生能够通过单链表的存储结构,掌握单链表的基本操作,包括单链表的建立、查找、插入、删除、输出等操作。
通过本实验可以巩固学生所学的线性表知识,提高编程能力,为后继课程的学习奠定基础。
二、实验内容1、为线性表{10,30,20,50,40,70,60,90,80,100}创建一个带头结点的单链表;2、在该链表上查找值为50,65的结点,并返回查找结果(找到:返回在县新链表中的位置);3、在该链表上值为50的结点后,插入一个值为120的结点;4、删除该链表上值为70的结点。
写出各操作的实现函数,并上机验证。
三、实验原理、方法和手段使用带头结点的单链表的表示线性表,通过实验,熟悉链表的创建、查找、插入、删除、输出等是链表的基本操作。
具体如下:(1)首先定义单链表的节点结构;(2)在单链表创建过程中,首先初始化一个带头结点的空链表,对线性表中的各元素依次通过键盘输入、建立该元素结点、插入到单链表中,实现单链表的创建过程;结点的插入有头插入和尾插入两种方法,采用不同方法时应注意元素的输入顺序。
(3)查找过程可以从头结点开始,将待查找的数据依次与每个结点的数据域比较,匹配及查找成功,弱链表访问完未找到匹配的元素,则查找不成功。
为能够返回查找成功的结点位置,在链表的搜索过程中,应设置一个计数器,记录搜索结点的序号;(4)插入结点时,首先要通过查找算法,找到带插入结点的前驱结点,然后为带插入元素建立结点,通过指针的修改,将结点插入。
(5)删除结点时,首先要通过查找算法,找到待删除结点的前驱,然后通过指针的修改,将待删除结点从链表中卸下,释放该结点。
(6)以上操作的正确性,均可以通过链表的输出结果来验证。
《软件工程实践》实验指导书学院:数学与计算机学院专业:计算机专业年级:指导教师:汪璟玢系主任(或教研室主任):本课程实验教学目的和基本要求:知识方面:通过本课程设计,让学生进一步了解软件项目管理、需求分析、系统设计和软件测试的基本原理和方法,在软件开发的各个阶段熟悉并掌握一种表达工具,实现一个小规模的系统开发。
能力方面:在本课程设计过程中,注重培养学生分析问题和独立解决问题的能力。
素质方面:通过本课程设计,着重培养学生具备以下两方面的良好素质:一是针对实际系统中存在的问题,能够善于运用所学基本理论知识分析问题;二是规范地表达分析和设计方案。
本课程设计要求学生3-6人一组完成一个系统,并按照软件工程的规范形成相关文档资料。
参考资料:1.《软件工程实践者的研究方法》(第六版)(美)Roger S.Pressman著,郑人杰马素霞白晓颖译,机械工业出版社2.《软件工程实践者的研究方法》(第五版)(美)Roger S.Pressman著,梅宏译,机械工业出版社3.《软件工程》(第六版)(英)Ian Sommerville著,程一剑陈霞译,机械工业出版社4.《软件工程》郑人杰主编, 清华大学出版社5.《软件工程—理论、方法与实践》孙家广主编,刘强编著,高等教育出版社实验一:项目选择与用例图表达目的:结合具体的项目,要求学生结合用例图和用例文本的方法将系统功能表达清楚。
内容:项目选择、参与者确定、用例识别、用例间的关系表达,用例文本的表达要求:能够发现任务与用例的关系、用例间的关系并准确表达、用规范的用例文本描述用例。
开发环境和工具要求掌握:Windows200 Advanced Server、RationalRose2003、MS visio2003实验二:系统需求分析报告—类图目的:通过本次实验掌握对具体项目进行类的识别和分析,并完成系统类图。
内容:识别类、确定类的属性和操作、分析类间的关系完成类图要求:调查工作要深入,对系统的业务流程要充分了解;结合系统的功能进行类的分析。