数据结构课程设计_数据结构课程设计全

2020-02-27 其他范文 下载本文

数据结构课程设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据结构课程设计全”。

《数据结构》

课程设计报告

学 号 姓 名 班 级 指导教师

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;}

五、运行及调试分析

六、课程设计总结。

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

《数据结构课程设计.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
数据结构课程设计
点击下载文档
相关专题 数据结构课程设计全 数据结构 课程设计 数据结构课程设计全 数据结构 课程设计
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文