资源描述
吉林工业职业技术学院
( 数据结构实训报告 )
( 2011~ 2012 学年第1 学期)
实训地点: 网站建设实训室
指导教师: 张君楠、刘文宏
专业班级: 信管 3101
学生姓名: 王福玺( 0 3 )
2011年12月16日
目 录
实训项目 2
实训目的 2
设计分析 2
设计方案 3
详细设计 5
使用说明 7
运行调试 8
实训心得 8
参考文献 8
数据结构实训报告
实训项目
1。 个人项目:二分法查找演示
问题描述: 用箭头表示指针,模拟出二分法查找的指针变化过程。
要求: 给定一组数据。可以动态地显示二分法查找的过程.用到函数:setcolor(WHITE)-画颜色;line(x1,y1,x2,y2)-画直线;bar(x1,y1,x2,y2)-画矩形;settextstyle(0,0,2)-字体大小;outtextxy(x,y,变量或常量)-输出内容;initgraph(&gd,&gm,"c:\\tc") -tc所在目录的路径;setfillstyle(SOLID_FILL,0)-每次演示的时候先将下面显示的文字给去处掉,等等。
2。 小组项目:通讯录管理系统
问题描述:建立一个本班学生通讯录文件,包括学号(num)、姓名(name)、性别(sex)、电话(phone)、电子邮箱(email)、住址(addr)。
要求:编写菜单程序,功能包括:建立通讯录、插入记录,删除记录、修改记录、按照学号或姓名查询记录、显示记录、保存文件.定义班级学生结构体名称为student.学号(num)、姓名(name)、性别(sex)、电话(phone)、电子邮箱(email)、住址(addr)均为字符型数组,长度分别为2、8、2、11、20、20。
实训目的
通过本次实训,能够进一步巩固、掌握程序设计基础和数据结构课程的基本知识、基本技能。运用算法分析与程序设计的一般方法进行实际项目的开发.本项目需要具备熟练的数组和线性表知识,具备程序编写、调试的基本能力,具有一定的文字表达和报告撰写能力,具备办公软件使用能力.……。。
设计分析
1. 个人项目:二分法查找演示
用户在键盘上输入的是中缀表达式时,即两个操作数和中间一个运算符,如:3*(2+6)/4.计算时遵循“从左向右计算,先乘除后加减,先括号内后括号外”规则。因此中缀表达式的计算需要考虑括号、运算符优先级等因素,比较麻烦。为此先将中缀表达式转换为后缀表达式再进行运算,因为后缀表达式已经考虑了运算符优先级,消除了括号,运算时只需要处理操作数和运算符即可。
2. 小组项目:通讯录管理系统
设计方案
1。 个人项目:表达式求值
把问题分成两个部分:一是将中缀表达式转换为后缀表达式的算法;二是对后缀表达式求值的算法.
实现第一个算法思想:设置两个栈分别表示操作数栈和运算符栈,分别存放表达式中的操作数和运算符。设“\0”为表达式的结束符。算法的基本思想是:
(1) 两个栈初始化为空;
(2) 从左到右扫描表达式,遇到操作数一律进操作数栈。以“\0”为表达式的结束标志;
(3) 遇到运算符,则判断其优先级是否大于运算符栈栈顶元素的优先级。若大于则进栈,否则栈顶元素出栈并输出到操作数栈;
(4) 遇到左括号则左括号进运算符栈。若遇到右括号则出栈并输出到操作数栈,一直遇到左括号为止;
(5) 重复(2)(3)(4),直到整个表达式扫描结束,并且运算符栈为空.
如表达式:3*(2+6)/4\0
实现第二个算法思想:
(1) 设置一个空栈stack;
(2) 从左到右扫描后缀表达式;
(3) 遇到操作数压入stack栈中;
(4) 遇到运算符,则执行两次出栈操作,对出栈的两个操作数按照指定的运算符进行运算,结果进stack栈;
(5) 重复(2)(3)(4),直到整个表达式扫描结束。此时栈顶元素就是最后结果。
数据结构定义:
#define MAXSIZE 100
struct{char data[MAXSIZE];//中缀表达式转换为后缀表达式用到的运算符栈
int top;}op;
struct{float data[MAXSIZE];//定义后缀表达式求值用到的栈
int top;}op;
2。 小组项目:学生成绩管理
(1)建立一个明了的管理菜单。
(2)使操作人员很容易的完成对学生成绩的查询,修改和添加。
(3)对要查询的数据要有准确性。
数据结构定义:
定义主函数main( );在main( )里定义变量,使用do-while设计程序的容错性,定义被调函数fun1、fun2、fun3、fun4、fun5、fun6和fun7判断所要进行的操作.
if(choose==1||choose==2||choose==3||choose==4||choose==5 ||choose==6||choose==7||choose==8||choose==0)
switch(choose)
{
case 1:fun1(); break;// 添加
case 2:fun2(); break;// 计算个人总分、平均分,班级总分、平均分
case 3:fun3(); break; //排序
case 4:fun4(); break; //查询
case 5:fun5(); break; //修改
case 6:fun6();break; //删除
case 7:fun7();break; //插入
}
详细设计
1. 个人项目:表达式求值
源程序代码如下:
include〈stdio.h>
#define MaxSize 100
void trans(char str[],char exp[])
{struct
{char data[MaxSize];
int top;
}op;
char ch;
int i=0,t=0;
op.top=-1;
ch=str[i];
i++;
while(ch!='\0’)
{switch(ch)
{case’(’:
op。top++;op。data[op.top]=ch;
break;
case’)':
……
2. 小组项目:学生成绩管理
使用说明
1。 个人项目:表达式求值
本程序在turboc 2.0环境下运行通过。运行后,根据提示输入数据即可.可以输入由运算符+、-、*、/、()所构成的算术表达式。表达式输入结束时按回车键。在屏幕上输出后缀表达式,并输出计算结果.
2. 小组项目:学生成绩管理
运行调试
1. 个人项目:表达式求值
运行可执行文件00.exe或在turboc2。0下同时按住ctrl+F9运行00。c文件即可。
运行实例如下:
测试数据一:
图1 不等式
测试数据二:
2。 小组项目:学生成绩管理
实训心得
参考文献
[1] 闵敏. 数据结构. 高等教育出版社。2007。7
[2] 严蔚敏。 数据结构-C语言. 清华大学出版社
[3] 杨秀金. 数据结构。 西安电子科技大学出版社
[4] 李春葆. 数据结构习题与解析. 清华大学出版社
[5] 谭浩强。 C程序设计。 清华大学出版
[6] http://www.baidu。com
教师评语:
成绩评定
注:教师评定内容
1. 实践操作技能
2. 实训报告质量
3. 实训期间表现
展开阅读全文