1、 实验报告实验报告 (数据结构)(数据结构) 学院:学院:信息科学与技术学院信息科学与技术学院 班级:班级:电信电信 1203 班班 课题一课题一 运动会分数统计运动会分数统计 任务:任务: 参加运动会有 n 个学校,学校编号为 1n。比赛分成 m 个男子项目,和 w 个 女子项目。项目编号为男子 1m,女子 m+1m+w。不同的项目取前五名或前三 名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、 2;哪些项目取前五名或前三名由学生自己设定。 (melem=e; p-next=S; S=p; return 1; int Pop(PLStack if(!StackE
2、mpty(S) e=S-elem; p=S; S=S-next; free(p); return 1; else return 0; /*求迷宫路径函数*/ void MazePath(struct mark start,struct mark end,int mazeMN,int diradd42) int i,j,d;int a,b; Element elem,e; PLStack S1, S2; InitStack(S1); InitStack(S2); mazestart.xstart.y=2; /入口点作上标记 elem.x=start.x; elem.y=start.y; elem
3、.d=-1; /开始为-1 Push(S1,elem); while(!StackEmpty(S1) /栈不为空 有路径可走 Pop(S1,elem); i=elem.x; j=elem.y; d=elem.d+1; /下一个方向 while(d(%d,%d)“,e.x,e.y); if(e.d=0)printf(“右移“); else if(e.d=1)printf(“下移“); else if(e.d=2)printf(“左移“); else if(e.d=3)printf(“上移“); else if(e.d=88)printf(“到达目的地,走出迷宫n“); return; /跳出两层
4、循环,本来用 break,但发现出错,exit 又会结束程序,选用 return 还是不错滴 if(mazeab=0) /找到可以前进的非出口的点 mazeab=2; /标记走过此点 elem.x=i; elem.y=j; elem.d=d; Push(S1,elem); /当前位置入栈 i=a; /下一点转化为当前点 j=b; d=-1; d+; printf(“没有找到可以走出此迷宫的路径n“); /*建立迷宫*/ void initmaze(int mazeMN,int m,int n) /*手动建立函数*/ int i,j; /迷宫行,列 /M printf(“n 请输入迷宫的各行各列
5、:n 用空格隔开,0 代表路,1 代表墙n“,m,n); for(i=1;i=m;i+) for(j=1;j=n;j+) scanf(“%d“, printf(“你建立的迷宫为(最外圈为墙).n“); if(maze11=1|mazemn=1) printf(“输入有误“); for(i=0;i=m+1;i+) /加一圈围墙 mazei0=1; mazein+1=1; for(j=0;j=n+1;j+) maze0j=1; mazem+1j=1; for(i=0;i=m+1;i+) /输出迷宫 for(j=0;j=n+1;j+) if(mazeij=0)printf(“ “); else if(mazeij=1) printf(“); printf(“n“); void initauto(int mazeMN,int m,int n) /*自动建立迷宫函数*/ int i,j; for(i=1;i=m;i+) for(j=1;j=n;j+) mazeij=rand()%2; maze11=0;mazemn=0; printf(“你建立的迷宫为(最外圈为墙