数据结构课程设计

2020-03-02 07:23:12 来源:范文大全收藏下载本文

《数据结构》

课程设计报告

学 号 姓 名 班 级 指导教师

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

2014年6月

利用栈实现迷宫问题的求解

一、问题描述

以一个M*N的长方阵表示迷宫,0和1分别表示迷宫中的通路和墙壁。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出米有通路的结论。

二、设计思路

(1)以二维数组maze[m][n]表示迷宫,数组中元素值为0表示通路,1表示障碍。

(2)其中迷宫的入口位置和出口位置默认于maze数组的起始元素位置和最后个元素位置。

(3)以链表作存储结构的栈类型,实现求解迷宫的非递归程序。

三、数据结构定义 typedef struct{

int x; int y; }item; typedef struct{ int x,y,d; }DataType; typedef struct{ DataType data[1000]; int top; }SeqStack,*PSeqStack;

typedef struct{ DataType data[1000]; int top; }SeqStack,*PSeqStack;

四、程序清单 #include #include #include #define m 6 #define n 8 int maze[m+2][n+2]={{1,1,1,1,1,1,1,1,1,1},

typedef struct{

{1,0,1,1,1,0,1,1,1,1}, {1,0,0,0,0,1,1,1,1,1}, {1,0,1,0,0,0,0,0,1,1}, {1,0,1,1,1,0,0,1,1,1}, {1,1,0,0,1,1,0,0,0,1}, {1,0,1,1,0,0,1,1,0,1}, {1,1,1,1,1,1,1,1,1,1}}; int x; int y; }item;

item move[4]={{0,1},{1,0},{0,-1},{-1,0}};

typedef struct{ int x,y,d; }DataType;

typedef struct{ DataType data[1000]; int top; }SeqStack,*PSeqStack;

PSeqStack Init_SeqStack() {

} PSeqStack p; p=(PSeqStack)malloc(sizeof(SeqStack)); if(p) p->top=-1; return p;

int Empty_SeqStack(PSeqStack p) {

}

int Push_SeqStack(PSeqStack p,DataType x) {

}

int Pop_SeqStack(PSeqStack p,DataType *x) { if(p->top==999) return 0; if(p->top==-1) return 1; else return 0; else {

} p->top++; p->data[p->top]=x; return 1;

} if(Empty_SeqStack(p)) return 0; else {

} *x=p->data[p->top]; p->top--; return 1; void Destroy_SeqStack(PSeqStack *p) {

}

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

PSeqStack S; DataType temp; int x,y,d,i,j; if(*p) free(*p); *p=NULL; return;

temp.x=x0; temp.y=y0; temp.d=-1; S=Init_SeqStack(); if(!S) {

} Push_SeqStack(S,temp); while(!Empty_SeqStack(S)) {

Pop_SeqStack(S,&temp); x=temp.x; y=temp.y; d=temp.d+1; while(d

i=x+move[d].x; j=y+move[d].y; if(0==maze[i][j]) { temp.x=x; printf(\"栈初始化失败!!!\"); return 0;

}

}

} temp.y=y; temp.d=d; Push_SeqStack(S,temp); x=i; y=j; maze[x][y]=-1; if(x==m&&y==n) {

} else d=0; while(!Empty_SeqStack(S)) {

} Destroy_SeqStack(&S); return 1; Pop_SeqStack(S,&temp); printf(\"(%d,%d)

} Destroy_SeqStack(&S); return 0; int main() {

}

五、运行及调试分析 mazepath(maze,move,1,1); return 0;

六、课程设计总结等

在做实验前,一定要将课本上的知识吃透,因为这是做实验的基础,否则,在做设计程序实验时,这将使你做的难度加大,浪费宝贵的时间.使你事倍功半.做实验时,一定要亲力亲为,务必要将每个步骤,每个细节弄清楚,弄明白,实验后,还要复习,思考,这样,你的印象才深刻,记得才牢固,否则,过后不久你就会忘得一干二净,这还不如不做.通过这次程序设计的实验,使我们学到了不少实用的知识,更重要的是,做实验的过程,思考问题的方法,这与做其他的实验是通用的,真正使我们们受益匪浅。

大数相乘

一、问题描述

本问题中,要求输入两个相对较大的正整数,能够通过程序计算出其结果

二、设计思路

1.输入阶段采用一维数组a[],b[] 在输入阶段当大数输入时,大数a,b从高位到低位分别依次存入数组a[ ],b[ ]。

2.调用函数计算阶段采用一维数组c[ ] 在计算过程中,由个位到高位依次计算各位的结果,并依次存入数组c[ ]中。

三、数据结构定义

int x[N],y[N],z[N*N];

四、程序清单 #include #include #define N 80 void mul(int *x,int *y,int *z) { int i,j; for(i=0;i=0) n[i++]=s[j--]-\'0\'; } void iniXY(int *x, int *y) { int i; for(i=0;i=0) printf(\"%d\",z[i--]); printf(\"\\n\"); return 0; }

五、运行及调试分析

六、课程设计总结。

回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。

数据结构课程设计

课程设计(数据结构)

数据结构课程设计

数据结构课程设计

数据结构课程设计

数据结构课程设计

数据结构课程设计

数据结构课程设计

数据结构课程设计

数据结构课程设计

《数据结构课程设计.doc》
数据结构课程设计
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文