软件技术基础上机实验4(数据结构)2007
- 格式:doc
- 大小:38.00 KB
- 文档页数:3
《软件技术基础》实验指导书电子商务教研室2009年9月实验三队列的应用◆实验目的与基本要求1、掌握队列的顺序存储和链式存储结构。
2、掌握队列的特点。
3、掌握队列的基本运算。
◆实验条件1、硬件:一台微机2、软件:操作系统和C语言系统◆实验方法确定存储结构后,上机调试实现队列的基本运算。
◆实验内容1、写出队列的出队和入队算法。
2、设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚,依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已停放n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。
编制一个程序模拟该停车场的管理。
◆性质:必做◆类型:验证◆2h队列是从日常排队现象抽象出来的一种数学模型。
当然数据结构中的队列远没有生活中的排队灵活。
数据结构中的队列规定:数据只能从队尾进,从队首出来。
已经进入队列的数据次序不能再做改变。
这就叫做“先进先出”(FIFO)或者说“后进后出”(LILO)。
允许插入的一端称为队尾,通常用一个称为尾指针(rear)的指针指向队尾元素,即尾指针总是指向最后被插入的元素;允许删除的一端称为队首,通常也用一个队首指针(front)指向队首元素的前一个位置(当然也可以直接指向队首元素,只是许多数据结构的书上都习惯这么定义)。
与队列类似,我们可以用一维数组来模拟队列这种数据结构,也可以用链表来模拟。
根据以上描述,队列可以可以有以下基本操作:1、创建初始化:按约定置队列为空状态。
《软件技术根底》上机实验报告范文今天为大家收集资料回来了关于实验的范文,希望能够为大家带来帮助,希望大家会喜欢。
同时也希望给你们带来一些参考的作用,如果喜欢就我们的后续更新吧!1.顺序表的建立、插入、删除。
2.带头结点的单链表的建立(用尾插法)、插入、删除。
1.分别建立二个文件夹,取名为顺序表和单链表。
2.在这二个文件夹中,分别存放上述二个实验的相关文件。
每个文件夹中应有三个文件(.c文件、.obj文件和.exe文件)。
3. 截止时间:12月28日(18周周日)晚上关机时为止,届时效劳器将关闭。
1.格式:《计算机软件技术根底》上机实验报告用户名se×××× 学号姓名学院① 实验名称:② 实验目的:③ 算法描述(可用文字描述,也可用流程图):④ 源代码:(.c的文件)⑤ 用户屏幕(即程序运行时出现在机器上的画面):2.对c文件的要求:程序应具有以下特点:a 可读性:有注释。
b 交互性:有输入提示。
c 构造化程序设计风格:分层缩进、隔行书写。
3. 上交时间:12月26日下午1点-6点,工程设计中心三楼教学组。
请注意:过时不候哟!0.顺序表的插入。
1. 顺序表的删除。
2.带头结点的单链表的插入。
3. 带头结点的单链表的删除。
注意:1. 每个人只需在实验报告中完成上述4个工程中的一个,详细安排为:将自己的序号对4求余,得到的数即为应完成的工程的序号。
例如:序号为85的同学,85%4=1,即在实验报告中应完成顺序表的删除。
2. 实验报告中的源代码应是通过编译链接即可运行的。
3. 提交到个人空间中的内容应是上机实验中的全部内容。
《软件技术基础》教学大纲一、课程信息二、课程内容(一)课程教学目标通过本课程的学习,使学生了解计算机软件中的相关重要概念、软件技术的基础知识和方法,从而培养学生利用计算机解决问题的意识和能力,为计算机在专业应用中奠定基础。
为非计算机专业学生开设的一门关于计算机软件基础知识的综合性课程,以应用为目的,选择性地介绍数据结构、操作系统、软件工程、数据库技术和网络基础等部分内容,通过这些内容的学习,学生能对计算机软件系统有一个整体的认识和了解。
(二)基本教学内容1、计算机软件技术概述及C语言回顾;2、几种典型数据结构的逻辑结构和存储结构;3、算法的概念,二叉树及图的遍历方法,常用的查找和排序算法。
4、软件工程中的基本概念及生命周期法;5、操作系统中的基本概念及管理方法;6、数据库的基本知识,SQL语言。
7、计算机网络的主要结构和常识。
8.网络新技术(1)计算机软件技术概述及C语言回顾;教学目的与要求:了解软件技术的发展历程,常用软件的分类。
复习开发工具C语言中的相关知识。
教学重点:教材章节内容及开发工具C语言中的相关知识。
教学难点:C语言中指针的应用。
教学内容:软件的概念,历史及分类。
本教程各章节的主要内容及学习方法。
开发工具C语言中较难理解的指针,结构体等编程知识。
(2)数据结构教学目的与要求:理解数据结构的基本概念;理解线性表、栈、队列数据结构的基本概念,理解各线性数据结构的特点和存储结构,掌握基于不同的存储结构的相关操作的实现方法;理解树和图的基本概念,基本特点和存储结构,掌握二叉树的遍历算法的实现以及树和二叉树之间转换的方法;理解查找和排序的基本概念,掌握查找和排序的各三种基本方法和实现。
教学重点:线性表、堆栈、队列、树和图的逻辑结构表示;线性表、堆栈、队列、树和图的存储算法;线性表、堆栈、队列、树和图的插入和删除操作的算法。
教学难点:单链表的建立及操作算法;循环队列的工作原理、查找以及排序算法。
南京航空航天大学计算机软件技术基础实践实验报告课程名称:计算机软件技术基础专题:数据结构上机实践姓名:xxx学号:xxx学院:自动化学院专业:自动化班级:xxx2013年10月目录(程序和流程图)实验一------------------------------------4第一种算法---------------------------4第二种算法---------------------------7实验二------------------------------------9线性表------------------------------9单链表------------------------------11顺序栈------------------------------14链栈---------------------------------15链列---------------------------------18实验三------------------------------------20二叉树----------------------------20实验四------------------------------------22顺序查找------------------------22二分查找------------------------24插入排序------------------------26选择排序------------------------28冒泡排序------------------------30大作业------------------------------------32通讯录---------------------------32一、实验一实验对象:顺序表。
实验目的:实现两个顺序表的合并。
实验要求:将共同拥有的元素只存其一。
思路清晰,编程正确,并将数据元素显示出来。
数据结构习题答案第一节概论一、选择题1.要求同一逻辑结构的所有数据元素具有相同的特性,这意味着( )。
A.数据元素具有同一的特点 *B.不仅数据元素包含的数据项的个数要相同,而且对应数据项的类型要一致 C.每个数据元素都一样 D.数据元素所包含的数据项的个数要相等2.数据结构是一门研究非数值计算的程序设计问题中计算机的( (1) )以及它们之间的( (2) )和运算的学科。
(1) A.操作对象 B.计算方法 *C.物理存储 D.数据映像(2) A.结构 *B.关系 C.运算 D.算法3.数据结构被形式地定义为(D,R),其中D是( (1) )的有限集合,R是D上( (2) )的有限集合。
(1) A.算法 *B.数据元素 C.数据操作 D.逻辑结构(2)A.操作 B.映像 C.存储 *D.关系4.在数据结构中,从逻辑上可以把数据结构分为( )。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构 *C.线性结构和非线性结构 D.内部结构和外部结构5.线性表的顺序存储结构是一种( )的存储结构。
*A.随机存取 B.顺序存取 C.索引存取 D.Hash存取6.算法分析的目的是( )。
A.找出数据结构的合理性 B.研究算法中的输入和输出的关系 *C.分析算法的效率以求改进 D.分析算法的易懂性和文档性7.计算机算法指的是( (1) ),它必须具备输入、输出和( (2) )等五个特征。
(1) A.计算方法 B.排序方法 *C.解决某一问题的有限运算序列D.调度方法(2) A.可行性、可移植性和可扩充性 *B.可行性、确定性和有穷性 C.确定性,有穷性和稳定性 D.易读性、稳定性和安全性8.线性表若采用链表存储结构,要求内存中可用存储单元的地址( )。
A.必须是连续的 B.部分必须是连续的 C.一定是不连续的 *D.连续不连续都可以9.在以下的叙述中,正确的是( )。
A.线性表的线性存储结构优于链式存储结构 *B.二维数组是它的每个数据元素为一个线性表的线性表 C.栈的操作方式是先进先出 D.队列的操作方式是先进后出10.根据数据元素之间关系的不同特性,以下四类基本的逻辑结构反映了四类基本的数据组织形式,其中解释错误的是( )。
122示,单击“创建”按钮,创建此关系并返回到“关系”窗口。
图8-9 选择建立关系的表图8-10 “关系”窗口类似方法,可以通过拖动“课程编号”字段创建“学生选课”表和“课程设置”表的关联关系。
此时,在此窗口中用连线显示出了刚建立的表间的关联关系,如图8-12所示。
图8-11 “编辑关系”窗口图8-12 建立好表间关系的“关系”窗口实验2 简单的数据查询与统计操作一、实验目的1.认识数据库中查询的基本概念。
2.掌握建立查询的方法。
3.掌握SQL查询的方法。
4.掌握SELECT语句的基本功能。
二、实验内容1.创建查询。
所谓查询,是指根据用户指定的一个或多个条件,在数据库中查找满足条件的记录,并将其作为文件存储起来。
本例要求查询有哪些学生选修了“Access数据库”课程以及任课教师姓名的信息。
123 创建该查询的操作步骤如下。
(1)在图8-3所示的主窗口中,选择“查询”对象,然后单击“新建”按钮,弹出“新建查询”对话框,如图8-13所示。
在此窗口中选择“设计视图”选项,然后单击“确定”按钮,弹出与图8-9相同的窗口,在此窗口中选择查询中所涉及的表,即“学生基本情况”表、“课程设置”表和“学生选课”表,单击“添加”按钮,选择后单击“关闭”按钮,进入图8-14所示的窗口。
图8-13“新建查询”窗口图8-14 指定查询的列和查询条件的窗口(2)在图8-14所示窗口的“字段”列表框中,选择要查询的字段,这里我们选择查询学生的学号、姓名、性别、课程名称和授课教师字段,在“条件”部分指定数据的筛选条件,在“课程名称”列和“条件”行相交的单元格中输入“Access 数据库”,如图8-15所示。
图8-15 指定好查询的列和查询条件的窗口。
26
3.设置页眉和页脚。
设置页眉和页脚奇偶页不同效果,在奇数页眉输入你本人姓名,在偶数页眉输入你本人学号,格式要求为楷体、五号字、居中对齐;在全部页脚设置页码,右对齐,页码格式为第x页共y页。
在“插入”功能区“页眉页脚”分组中单击“页眉”按钮,选择“编辑页眉”命令,在页眉页脚工具“设计”功能区中勾选“齐偶页不同”复选框,再进行设置。
4.打印预览。
单击标题栏上的打印预览按钮,在预览状态选择75%的比例查看文档。
实验6 邮件合并和宏
一、实验目的
1.掌握邮件合并操作。
2.掌握宏的创建、录制和使用。
二、实验内容
1.邮件合并。
(1)建立主文档。
建立图2-9所示的主文档,输入录取通知的内容,在录取内容后插入“通信”类的剪贴画作为水印。
将该文档以Word5.doc为文件名保存在
D盘或指定的文件夹中。
图2-9 样张
(2)创建数据源。
新建文档,输入表2-2所示的新生信息表为数据源,并以Word51.doc为文件名保存在当前文件夹中,然后关闭该文件。
表2-2 新生信息表
编号姓名录取分数系专业
10027 心雨589 计算机软件工程
10028 王飞597 生物系分子生物学
10029 李星601 外语英语
10030 张一鸣580 外语法语。
说明每个实验题目含有一个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.串采用顺序存储结构,编写朴素模式匹配算法,查找在串中是否存在给定的子串。
《数据结构》课程标准一、概述(一) 课程的性质本课程为计算机专业技术人员提供必要的专业基础知识和技能训练,同时也是计算机应用相关学科所必须掌握的课程。
通过本课程的学习,使学生熟练掌握计算机程序设计中常见的各种数据的逻辑结构、存储结构及相应的运算,初步掌握算法的时间分析和空间分析的技术,并能根据计算机加工的数据特性运用数据结构的知识和技巧设计出更好的算法和程序,并进一步培养基本的良好的程序设计能力。
(二)课程基本理念以培养学生如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法进行的分析和评价的能力,学会数据的组织方法和实现方法,并进一步培养基本的良好的程序设计能力。
(三)课程设计思路本课程标准从计算机软件技术及应用技术专业的视角出发,以满足本专业就业岗位所必须具备的计算机软件技术基础知识为基础,教学内容设计通过岗位工作目标与任务分析,分解完成工作任务所必备的知识和能力,采用并列和流程相结合的教学结构,构建教学内容的任务和达到工作任务要求而组建的各项目,以及教学要求和参考教学课时数。
通过实践操作、案例分析,培养学生的综合职业能力,基本达到程序员级职业技能鉴定标准。
本课程建议课时为64学时,理论课时为20,实训课时为44,在具体教学过程中可进行进行调整。
二、课程目标(一)总目标本课程以培养学生的数据抽象能力和复杂程序设计的能力为总目标。
通过本课程的学习,学生可以学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及其相应的运算,并初步掌握算法的时间分析和空间分析的技术;另一方面,本课程的学习过程也是复杂程序设计的训练过程,要求学生编写的程序结构清楚和正确易读,符合软件工程的规范。
(二)具体目标掌握各种主要数据结构的特点、计算机内的表示方法,以及处理数据的算法实现。
使学生学会分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,并初步了解对算法的时间分析和空间分析技术。
1)实验项目简介:《软件技术基础实验》是与理论课程《软件技术基础》配套开出的,主要包含一个C程序部分的综合测试上机实验,和四个数据结构部分的基本上机实验,着重培养同学进行软件设计的基本能力。
2)实验内容:实验一:C程序设计综合上机实验 4学时实验目的:回顾C程序部分的相关知识,加强同学对指针、函数和结构体等的软件技术基础课程中需要大量使用的C语言知识的巩固和掌握。
实验内容:1、从键盘上输入5个同学的基本信息,包含同学的姓名(用拼音字母表示),班级,年龄,性别,身高。
把年龄最小的一个同学的信息同排在第一个位置的同学的信息交换,把年龄最大的一个同学的信息和最后一个元素交换,并将交换前后的结果打印出来。
2、已知一个班中5名同学的英语成绩为{88,76,83,89,86,80,62,85,74,87},平时成绩为{8,9,7,8,6,9,10,8,9,10},主函数中用C的指针分配函数:malloc()分配两块连续的存储单元存放以上的考试成绩和平时成绩,用一个函数计算该班同学的考试平均成绩和各同学的最终成绩(考试成绩+平均成绩),在主函数中将以上计算结果打印出来。
3、要求在主函数输入一串文字,并编写一个函数计算该文字串中的大写字母,小写字母,数字以及其它字符的个数,并在主函数中将文字串和以上计算结果打印出来。
本题选作。
实验要求:本实验是软件技术基础课程的第一次上机实验,要求同学从本次实验开始遵守以下基本实验要求:1)上机之前必须在书面编好以上程序;2)上机是在老师的指导下完成程序的编译、调试和测试;3)实验完成后完成实验报告。
实验二:顺序表基本操作上机实验 4学时实验目的:掌握顺序表的基本概念,基本操作和其C语言实现,同时进一步强化C程序设计的基本方法和能力。
实验内容:1、有序的一组整数{1,2,3,4,6},设计顺序表并实现以下操作:A.初始化线性表;B.添加上述一组数;C.删除第四个数据元素;D.显示B,C操作后的结果。
实验一、顺序表逆置和单链表逆置1.1 问题的提出设有一个线性表E={e1, e2, … , e n-1, e n},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ e n , e n-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。
顺序表逆置1.1.1 算法分析Step1:将顺序表位置i的元素与位置L->last-i+1的元素进行互换;Step2:重复Step1,直到i=L->last/2,结束。
1.1.2 问题的程序代码//顺序表逆置void invert(sequenlist*L){int i;datatype temp; //定义i和temp的类型for(i=1;i<=L->last/2;i++)//for循环语句,其中的L->last/2当L->last为奇数时,相当于向下取整{temp=L->data[i];L->data[i]=L->data[L->last-i+1];L->data[L->last-i+1]=temp;//将位置i和位置L->last-i+1的元素进行互换}}1.1.3 运行结果1.1.4 存在的问题逆置表中的元素只能是单个元素,不能进行多位数的逆置,如下图所示单链表逆置1.2.1 算法分析Step1:将p指针指向头结点,q指针指向头结点的下一个结点;Step2:将p和q逆置,并将它们分别后移一个结点;Step3:重复Step1~ Step2,直到指针r指向空域,结束。
1.2.2 问题的程序代码//单链表逆置void invert(linklist *head){linklist *p,*q,*r;p=head->next;//p指针指向头结点q=p->next; //q指针指向头结点的下一个结点while(q!=NULL)//当q指针非空时,进行while循环{r=q->next; q->next=p;//将r指针指向q的下一个结点,而q指针指向pp=q; q=r;//将p指针指向q,q指针指向r,实现p和q的逆置}head->next->next=NULL;//原链表的第一个结点指针置空,变为新链表的尾结点head->next=p;//原链表最后一个结点变为新链表的头结点}1.2.3 运行结果1.2.4 存在的问题与顺序表逆置一样,逆置表中的元素只能是单个元素,不能进行多位数的逆置,如下图所示实验二、分解单链表2.1 问题的提出已知由不具有头结点的单链表表示的线性表中,含有三类字符的数据元素(字母、数字和其他字符),试编写算法构造三个以循环链表表示的线性表,使每个表中只含有同一类的字符,且利用原表中的结点空间,头结点可另辟空间。
计算机软件实验报告姓名:班级:学号:指导教师:实验一线性表的基本操作一、实验目的与基本要求1.掌握数据结构中的一些基本概念。
数据、数据项、数据元素、数据类型和数据结构,以及它们之间的关系。
2.了解数据的逻辑结构和数据的存储结构之间的区别与联系;数据的运算与数据的逻辑结构的关系。
3.掌握线性表的基本操作:插入、删除、查找以及线性表的合并等运算。
4.掌握运用C语言上机调试线性表的基本方法。
二、实验条件1.硬件:一台微机2.软件:操作系统和C语言系统三、实验方法确定存储结构后,上机调试实现线性表的基本运算。
四、实验内容1.试编写在无头结点的单链表上实现线性表基本运算LOCATE(L,X),INSERT (L,X,1)和DELETE(L,1)的算法。
2.假设有两个按数据元素值递增有序排列的线性表A和B,均以单链表作为存储结构。
编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许值相同)排列的线性表C,并要求利用原表(即A表和B表)结点空间存放表C。
3.将一个线性表中的值就地逆置。
4.在线性表的顺序存储结构的第一个位置上插入一个元素。
(注意区分链表和顺序表)实验代码:#include"stdlib.h"#include"stdio.h"struct node //定义结构体{int d;struct node *next;};struct node *head1,*head2,*p,*q;void pre(struct node *head) //打印数据{printf("链表中的数据为:\n");p=head;while(p!=NULL){printf("%5d",p->d);q=p;p=p->next;}printf("\n");}struct node *creat() //建立链表{struct node *head;int x;printf("输入你要储存的数据:\n");head=NULL;q=NULL;scanf("%d",&x);while(x>0){p=(struct node *)malloc(sizeof(struct node));p->d=x;p->next=NULL;if(head==NULL) head=p;else q->next=p;q=p;scanf("%d",&x);getchar();}pre(head);return (head);}void locate(struct node *head,int x) //查找链表中的数据{int u=1;p=head;while (p->next!= NULL){if (p->d==x)break;else{ p=p->next;u++;}}if(p->d!= x)printf("无此结点");printf("在链表中的位置为:");printf("%d",u);}void insert(struct node *head,int x, int i) //插入数据{ p = head;int j=1;q=(struct node *)malloc(sizeof(struct node));q->d=x;if(i==1){ q->next=head;head=q;}else{while((j<i-1)&&(p->next !=NULL)){j++;p=p->next;}q->next=p->next;p->next=q;}}void delet(struct node *head,int i) //删除数据{ p=head;int j=1;if(i<0) printf("无此位置");if(i==1){q=head; head=head->next; free(q);}else{while((j<i-1) && (p->next != NULL)){ p=p->next;j++;}q=p->next;p->next=q->next;free(q);}}void hebing(struct node *x,struct node *y) //合并两个链表{p=x;q=y;while(p->next!=NULL)p=p->next;p->next=q;pre(x);}void paixu(struct node *head) //对链表中的数据进行排序{int m,n,i=1,t;p=head;while(p->next!=NULL){p=p->next;i++;}p=head;for(n=i;n>1;n--){p=head;for(m=1;m<n;m++){q=p->next;if(p->d<q->d){t=p->d;p->d=q->d;q->d=t;}p=p->next;}}}void caozuo(struct node *head) //操作界面{int m,n;char t;printf("输入你要的操作:,查找 2,插入 3,删除\n");scanf("%c",&t);switch(t){case'1':{printf("输入你要查找的元素的值:\n");scanf("%d",&m);locate(head,m);}break;case'2':{printf("输入你要插入的元素的值和位置:\n");scanf("%d",&m);scanf("%d",&n);insert(head,m,n);pre(head);}break;case'3':{printf("输入你要删除的元素的位置:\n");scanf("%d",&m);delet(head,m);pre(head);}break;default:printf("error\n");}}void main() //主函数{char frag='y',n=NULL;printf("输入你要建立的第A链表中的元素:\n");head1=creat();printf("输入你要建立的第B链表中的元素:\n");head2=creat();do{printf("选择你要操作的链表A/B或者合并排序操作C:\n"); //选择操作scanf("%c",&n);getchar();switch(n){case'A':{caozuo(head1);}break;case'B':{caozuo(head2);}break;case'C':{hebing(head1,head2);paixu(head1);pre(head1);}break;default:printf("error\n");}printf("\n是否继续y/n:\n");scanf("%c",&frag);getchar();}while(frag=='y');}实验2 栈和队列的基本操作一、实验目的与基本要求1.掌握栈和队列的顺序存储和链式存储结构2.掌握栈和队列的特点。
计算机软件技术基础(第三版)沈被娜课后习题答案较全(总29页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--第一章信息与计算机什么是信息信息与数据的区别和联系在何处信息定义之一:信息是现实世界中存在的客观实体、现象、关系进行描述的数据。
信息定义之二:信息是经过加工后并对实体的行为产生影响的数据。
与数据的区别和联系:数据定义:数据是现实世界客观存在的实体或事物的属性值,即指人们听到的事实和看到的景象。
我们把这些数据收集起来,经过处理后,即得到人们需要的信息。
信息和数据的关系可以归结为: 1. 信息是有一定含义的数据。
2. 信息是经过加工(处理)后的数据。
3. 信息是对决策有价值的数据。
信息有哪些基本属性信息的基本属性有: 1. 事实性。
2. 等级性。
3. 可压缩性。
4. 可扩散性。
5. 可传输性。
6. 共享性。
7. 增值性和再生性。
8. 转换性。
计算机的主要特点是什么计算机最主要的特点是: 1. 高速自动的操作功能。
2. 具有记忆的能力。
3. 可以进行各种逻辑判断。
4. 精确高速的计算能力。
完整的计算机系统应该包括哪几部分目前最完整的计算机系统学说认为由五部分组成: 1. 人员 2. 数据 3. 设备 4. 程序 5. 规程什么是计算机硬件什么是计算机软件硬件:泛指实际存在的物理设备,包括计算机本身及其外围设备。
微型计算机的硬件系统:主机、外存储器、输入设备、输出设备、微机的系统总线。
软件:是指计算机程序、方法、规则的文档以及在计算机上运行它时所必须的数据。
计算机软件一般分为系统软件和应用软件。
软件技术发展的几个阶段各有什么特点它与硬件的关系如何第一阶段:高级语言阶段特点:这一时期,编译技术代表了整个软件技术,软件工作者追求的主要目的是设计和实现在控制结构和数据结构方面表现能力强的高级语言。
但在这一时期内,编译系统主要是靠手工编制,自动化程度很低。
科 技 教 育199 科技资讯 S CI EN CE & T EC HNO LO GY I NF OR MA TI ON 随着计算机技术的迅速普及与发展,高校学生的计算机基础教育越来越受到社会的关注和学校的重视,计算机基础课已经成为高校重要的基础课程之一。
《计算机软件技术基础》是我校为工商类、金融、信息与计算科学等专业的本科生开设的一门计算机基础课程。
1 规划课程体系由于理工类、管理类、文法类等学生的专业领域不同,因而对计算机技术的要求也各有不同,我校分别对不同专业的学生设置了相关的计算机类课程。
该课程是针对非计算机类的工商类、金融、信息与计算科学等专业开设的一门软件综合技术基础课程。
其涉及面广,内容相对独立,涉及计算机操作系统、数据结构、数据库技术、软件工程等课程的基本内容。
通过学习该课程,可使非计算机专业的学生能够了解并掌握计算机软件最基本的概念、思想、原理和方法,掌握开发应用软件所必需的软件基础知识,提高软件素质和用计算机技术求解实际问题的能力,为今后更好地服务于该专业打下必要的基础。
2 组织教学环节2.1制定教学大纲和教学内容计算机软件技术基础课程是一门成熟的课程,开设时间较长,但由于其包含的内容丰富,所涉及专业较广,所以课程内容应充分考虑专业培养方案适时调整,2013年我们对旧的教学大纲进行了修订,宗旨是既体现该课程在专业培养目标中的地位和作用,又使课程教学内容保留经典,体现现代、涉及前沿。
目前关于计算机软件技术基础的教材很多,内容也比较成熟,但却鲜有主要依据C语言来描述算法的教材,由于我校所授课学生先修的高级语言仅有C语言,因此在教学实施中,我们将教材中对应内容的算法和例题用C语言进行描述,便于学生理解和学习。
2.2制作多媒体课件计算机软件技术基础是一门交互性很强的课程,因此采用多媒体教学是行之有效的教学手段,多媒体课件的制作是多媒体教学中的一个重要环节。
(1)课件的整体布局上,遵循“按章节组织教学内容、涉及每个知识点、突出重点和难点”的原则,不能把课件制作成教材的“克隆”版,做到源于教材而不局限于教材。
实验四数据结构上机实验
⏹实验目的:
掌握非线性结构中二叉树的基本概念、基本操作和应用
⏹实验内容:
1.创建二叉树:
按照先序序列,逐个输入节点数据,根据二叉树的递归定义,创建生成链式的二叉树。
输入整数0时表示空节点。
(注:每个叶子节点后接两个空节点)
2.二叉树的遍历
a)在已经创建的二叉树中进行先序遍历,并在屏幕上按照访问次序打印输出节点
数据。
b)在已经创建的二叉树中进行中序遍历,并在屏幕上按照访问次序打印输出节点
数据。
c)在已经创建的二叉树中进行后序遍历,并在屏幕上按照访问次序打印输出节点
数据。
⏹实验报告:
1.源代码(包括主要结构、主要语句、函数注释说明)
2.运行结果(包括程序如何使用,输入数据和输出结果)
3.实验体会和问题分析
程序需补充完整
#include <stdio.h>
#include <stdlib.h>
typedef struct btreenode
{
int data;
struct btreenode *LC;
struct btreenode *RC;
} bnode;
void PreOrder(bnode *BT)/*先序遍历*/
{
if(BT==NULL)
return;
else
{
printf("%d ",BT->data);/*访问节点数据*/
if(BT->LC!=NULL) ;/*先序遍历左子树*/
if(BT->RC!=NULL) ;/*先序遍历右子树*/ }
}
void InOrder(bnode *BT)/*中序遍历*/
{
if(BT==NULL)
;
else
{
if(BT->LC!=NULL) InOrder(BT->LC);/*中序遍历左子树*/
printf("%d ",BT->data);/*访问节点数据*/
if(BT->RC!=NULL) InOrder(BT->RC);/*中序遍历右子树*/ }
}
void PostOrder(bnode *BT)
{
if (BT==NULL)
return;
else
{
if(BT->LC!=NULL) PostOrder( );/*后序遍历左子树*/
if(BT->RC!=NULL) PostOrder( );/*后序遍历右子树*/
printf("%d ",BT->data);/*访问节点数据*/
}
}
bnode *CreatBiTree()/*按先序创建二叉树*/
{
bnode *proot;
char t;
printf("\ninput a int:");
scanf("%d",&t);
if(t==0)/*输入0时,认为是空节点*/
{
proot= NULL;
}
else
{
proot = (bnode *)malloc(sizeof(bnode));/*申请新的节点空间*/
proot->data=t;
proot->LC= ;/*创建节点左子树*/
proot->RC= ;/*创建节点右子树*/ }
return proot;
}
void main()
{
bnode *T;
T=CreatBiTree();
printf("\nOrder:\n");
printf("\nPreOrder:\n");
PreOrder(T);
printf("\n\nInOrder:\n");
InOrder(T);
printf("\n\nPostOrder:\n");
PostOrder(T);
}。