计算机科学与技术学院课程设计成绩单。
课程名称:数据结构课程设计。
a:90~100分 a-:85~89分 b+:82~84分 b:78~81分 b-:75~77分
c+:72~74分 c:68~71分 c-:64~67分 d:60~63分 f:<60分。
武汉科技大学计算机科学与技术学院制表。
一、概要设计。
拟采用两种类型的展分别对操作数和操作符进行操作。程序中将涉及下列两个抽象数据类型:
1、设定“操作数”的栈的抽象数据类型定义:
adt sqstack_f
约定端为栈顶,端为栈底。
基本操作:initstack_f(&s)
操作结果:构造一个空栈s。
gettop_f(&s,&e)
初始条件:栈s已存在。
操作结果:用e返回s的栈顶元素。
push_f(&s,ch)
初始条件:栈s已存在。
操作结果:插入元素ch为新的栈顶元素。
pop_f(&s,&e)
初始条件:栈s已存在。
操作结果:删除s的栈顶元素,并以e返回其值。
adt sqstack_f
2、设定“操作符”的栈的抽象数据类型定义:
adt sqstack_c
约定端为栈顶,端为栈底。
基本操作:initstack_c(&s)
操作结果:构造一个空栈s。
gettop_c(&s,&e)
初始条件:栈s已存在。
操作结果:用e返回s的栈顶元素。
push_c(&s,ch)
初始条件:栈s已存在。
操作结果:插入元素ch为新的栈顶元素。
pop_c(&s,&e)
初始条件:栈s已存在。
操作结果:删除s的栈顶元素,并以e返回其值。
adt sqstack_c
3、本程序包含六个模块。
1)主程序模块。
void main( )
初始化;while(命令==“继续”)
*e=*(s->top-1);
void push_f(sqstack_f *s,float e)
//在s的栈顶插入新的栈顶元素e,若栈的当前空间已满,则追加存储空间。
if(s->top-s->base>=s->stacksize)
s->top=s->base+s->stacksize;
s->stacksize+=stackincrement;
*s->top++=e;
void pop_f(sqstack_f *s,float *e)
//若栈s不空,则删除栈s的栈顶元素,用e带值返回,否则退出程序。
if(s->top==s->base)
exit(1);
*e=*-s->top;
3、判断运算符优先级的算法:
算符间的优先关系如下:
伪码算法:int precede(char top_char,char s1_char)
//栈顶的运算符赋给top_char,新读入的运算符赋给s1_char。判断它们的优先级。
//若栈顶运算符优先级高,则返回1,否则返回0
int i,pre[2];
char op[2];
op[0]=top_char; /栈顶的运算符赋给op[0]
op[1]=s1_char; /新读入的运算符赋给op[1]
for(i=0;i<2;i++)
switch(op[i])
if(pre[0]>=pre[1栈顶元素优先级高返回1
return 1;
elsereturn 0否则返回0
4、中缀表达式转换为后缀表达式的算法:
算法过程描述:
1) 首先将左括号“(”压进栈,作为栈底元素;
2) 从左而右对算数表达式进行扫描,每次读入一个字符s1[i];
3) 若遇到数字或小数点,则立即写入s2[i],若遇算数运算符,将“ ”空格)写入s2[i];
4) 遇到左括号“(”则压栈;
5) 若遇算术运算符,如果它们的优先级比栈顶元素高,则直接进栈,否则弹出栈顶元素输出到s2[i],直到新栈顶元素的优先级比它低,然后将它压栈;
6) 若遇到右括号“)”则将栈顶元素输出到s2[i],直到栈顶元素为“(”然后相互抵消;
7) 当扫描到“#”符号,表明表达式串已全部输入,将栈中的运算符全部输出到s2[i],并删除栈顶元素。
伪码算法:void translate(char *s1)
//中缀表达式转换为后缀表达式。
数据结构课程设计
课程设计说明书 题目哈夫曼编码问题的设计和实现。课程名称数据结构课程设计。院 系 部 中心。专业。班级。学生姓名。学号。设计地点。指导教师。设计起止时间 2008 年6月 2日至 2008 年 6月 6 日。目录。1 问题描述 2 1.1 题目内容 2 1.2 基本要求 2 1.3 测试数据 2 2...
数据结构课程设计
数据结构 课程设计。实验报告。学院 信息工程学院。班级 姓名 学号 指导老师 题目2 一元多项式的计算。1 实验目的。1 掌握链表的灵活运用 2 学习链表初始化和建立一个新的链表 3 知道怎样去实现链表删除结点操作与插入结点 4 理解链表的基本操作 包括数据域数据的相加 并能灵活运用。2 实验内容。...
数据结构课程设计
班级 信计 1102 姓名 李娜娜。学号 1108060209 设计日期 2013.07.15 西安科技大学计算机学院 1.实验题目 编制一个演绎扫雷游戏的程序。2.问题描述。做一个n x m的扫雷游戏,每个方格包含两种状态 关闭 closed 和打开 opened 初始化时每个方格都是关闭的,一个...