数据结构课程设计

发布 2022-10-01 21:05:28 阅读 2701

计算机科学与技术学院课程设计成绩单。

课程名称:数据结构课程设计。

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 初始化时每个方格都是关闭的,一个...