2数据结构实验报告二栈和队列及其应用.docxVIP

  • 50
  • 0
  • 约2.24千字
  • 约 5页
  • 2021-07-30 发布于山东
  • 举报

2数据结构实验报告二栈和队列及其应用.docx

2数据结构实验报告二栈和队列及其应用 2数据结构实验报告二栈和队列及其应用 PAGE / NUMPAGES 2数据结构实验报告二栈和队列及其应用 文档根源为 :从网络采集整理 .word 版本可编写 .支持 . 实验二 栈和行列及其应用 一、实验目的 掌握栈和行列这两种抽象数据种类的特色,并能在相应的应用问题中正确采用它们。 娴熟掌握栈种类的两种实现方法。 娴熟掌握循环行列和链行列的基本操作实现算法。 二、实验内容 用行列求解迷宫问题 [ 问题描绘 ] 以一个 M*N的长方阵表示迷宫, 0 和 1 分别表示迷宫中的通路和墙壁。设计 一个程序,对随意设定的迷宫, 求出一条从进口到出口的通路, 或得出没有通路 的结论。 [ 基本要求 ] 实现一个以次序储存构造的行列种类, 而后编写一个求解迷宫的非递归途序。 求得的通 路以三元组( i ,j ,pre)的形式输出,此中: ( i, j)指示迷宫中的一个坐标, pre 表示本路 径中上一个方块在行列中的下标。 [ 测试数据 ] 由学生随意指定。 三、源代码 # include stdio.h #define M 5 // 行数 #define N 5 // 列数 #define MaxSize 100 // 队最多元素个数 int mg[M+2][N+2]={ // 一个迷宫 , 其周围要加上均为 1 的外框 {1,1, {1,1,1,1,1,1,1}, {1,0,0,0,0,0,1}, {1,0,1,0,0,1,1}, 1 文档根源为 :从网络采集整理 .word 版本可编写 .支持 . {1,0,1,0,0,1,1}, {1,0,1,0,1,0,1}, {1,0,0,0,0,0,1}, {1,1,1,1,1,1,1} }; typedef struct {int i,j; int pre;} Box; typedef struct { Box data[MaxSize]; int front, rear; }QuType; void mgpath1(int xi,int yi,int xe,int ye) // 搜寻路径为:( xi ,yi ) -(xe,ye) { void print (QuType qu, int front ); int i,j,find=0,di; QuType qu; // 定义次序队 qu.front=qu.rear=-1; qu.rear++; qu.data[qu.rear].i=xi; //(xi,yi) 进队 qu.data[qu.rear].j=yi; qu.data[qu.rear].pre=-1; mg[xi][yi]=-1; while(qu.front!=qu.rear!find) {qu.front++; i=qu.data[qu.front].i;j=qu.data[qu.front].j; if(i==xej==ye) {find=1; print(qu,qu.front); 2 文档根源为 :从网络采集整理 .word 版本可编写 .支持 . } for (di=0;di4;di++) { switch(di) { case :i=qu.data[qu.front].i-1;j=qu.data[qu.front].j;break; case :i=qu.data[qu.front].i;j=qu.data[qu.front].j+1;break; case :i=qu.data[qu.front].i+1;j=qu.data[qu.front].j+1;break; case :i=qu.data[qu.front].i;j=qu.data[qu.front].j-1;break; } if(mg[i][j]==0) {find=1; qu.rear++; qu.data[qu.rear].i=i; qu.data[qu.rear].j=j; qu.data[qu.rear].pre=qu.front; mg[i][j]=-1; } } } } void print (QuType qu, int front ) { int k=front,j,ns=0; printf(\n); do 3 文档根源为 :从网络采集整理 .word 版本可编写 .支持 . {j=k; k=qu.data[k].pre; qu.data[j].pre=-1; } while (k!=0); printf( 迷宫路径以下: \n); k=0; while(kMaxSize) { if(qu.data[k].pre==-1) { ns++; printf(\t(%d,%d),qu.data[k].i,qu.data[k].j); if(n

文档评论(0)

1亿VIP精品文档

相关文档