数据结构课程设计

发布 2022-10-01 20:25:28 阅读 8239

《数据结构》

课程设计报告。

安徽工业大学计算机学院。

2023年6月。

目录。一、迷宫问题求解 2

二、大数相乘 8

三、学生成绩查询系统(二叉排序树) 10

一、问题描述:

利用栈求解迷宫问题。

二、设计思路:

首先先定义栈,初始化,入栈,出栈,删除栈,判空等,然后再结合具体迷宫算法。

三、数据结构定义。

typedef struct//定义move数组 ,,

typedef struct ,,

typedef struct

int x,y,d;//坐标位置与方向。

datatype;

typedef struct //定义一个顺序栈

else /顺序栈出栈删除栈顶元素。

int pop_pseqstack(pseqstack s,datatype *x)//将删除的元素保存在*x中

else /迷宫问题求解。

int mazepath(int maze[m+2][n+2],item move,int x0,int y0)

push_seqstack(s,temp);/迷宫入口点入栈。

while(!empty_seqstack(s))

可以走,用栈保存可以走的路径。

x=i;y=j;maze[x][y]=-1;

if(x==m&&y==n)

此时最后的出口坐标应该入栈。

push_seqstack(s,temp);

while(!empty_seqstack(s))

pop_pseqstack(s,&temp);/弹出。

push_seqstack(s1,temp);/入栈。

printf("可以走的路径坐标:");

while(!empty_seqstack(s1))

pop_pseqstack(s1,&temp);

printf("(d,%d)",maze[

printf("");

for(o=0;ofor(p=0;pif(maze[o][p]==100

printf

elseprintf("■

printf("

destory_seqstack(&s);/销毁栈。

return 1;

else d=0;//方向复位,从第一个方向开始试探。

else d++;试探下一个方向。

destory_seqstack(&s);

return 0;//迷宫无路 }

/主函数的实现。

void main()

int result; int i,j;

int x0=1;int y0=1; /定义一个开始点x0,yo

int maze[m+2][n+2]=;

printf("原迷宫图");

for(i=0;i for(j=0;jif(maze[i][j]==0)

printf("⊙

elseprintf

printf("printf("下面为129074157 刘伟画出的可走的迷宫路径");

result=mazepath(maze,move,1,1);

printf("%d",result);

六、最终运行效果图:

七、出现的问题及解决过程:

出现的问题:增量数组初始化出错,顺序栈封装出错和出口坐标不对。

1, 顺序栈封装:在迷宫问题中,如果该路径可以走,就将坐标和方向保存起来,然而,该类型是个结构体类型。我在顺序栈中,将data定义成了int类型,结果编译时出错,我第一种方法是,将data[3]定义成二维数组,但是编译不通过。

最后,我恍然大悟,data应该定义成入栈元素的类型,入栈的元素,是个封装的结构体datatype类型。最后第一个问题,解决了。

2, 增量数组初始化出错:item move[4]; 一开始,move[4]我想它是个数组,数组中包含两个成员x,y。所以我初始化时,想当然move[0].

x=;move[0].y=;…这点体现了我的基础知识不牢固啊。最后我想起了结构体的初始化,item move[4]=,最后问题解决了。

3, 出口坐标不对:

经改进: if(x==m&&y==n)

此时最后的出口坐标应该入栈。

push_seqstack(s,temp);

八、最终改进的输出:

一、 可以看见上面的输出,并不好看,所以我想了一个办法,既然栈是先进后出。我想了个办法,就是建立两个栈s,s1,当最后s中的元素逐个弹出时,此时我让它们在逐个进入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 初始化时每个方格都是关闭的,一个...