哈工大数据结构大作业 - 迷宫老鼠 下载本文

1.数据结构

1.1栈的指针实现 struct node{ Elementtype val; node *next; };

typedef node *STACK; 对应为:

struct node {

int val1; int val2; node *next; };

Node结构体,存放整形数据val1、 val2及指针*next用来指向后继的位置。

1.2压栈操作

void Push(Elementtype x, STACK S) {

STACK stk; stk = new node; stk->val = x; stk->nex = S->next; S->next = stk; }

对应为void Push(int x,int y, STACK S)

{

STACK stk; stk = new node; stk->val1 = x; stk->val2 = y; stk->next = S->next; S->next = stk;

}//压栈

1.3建立空栈

void MakeNull(STACK &S) {

S = new node; S->next = NULL; }

对应为:void MakeNull(STACK &S) {

S = new node; S->next = NULL;

}//栈的初始化

1.4弹栈

void Pop(STACK S) {

STACK stk; if(S->next){ stk = S->next; S->next = stk->next; delete stk; } }

对应为:void Pop(STACK S) {

STACK stk; if(S->next){ }

stk = S->next; S->next = stk->next; delete stk;

}//弹栈

1.5 返回栈顶元素 Elementtype Top(STACK S) {

if(S->next)

return(S->next->val); else

return NULL; }

2.源程序代码及注释

#include \#include \#include \

int** maze(int p,int q,float r)//用来生成动态迷宫,通路用表示;障碍用表示 {

int i, j; int t,c; int **a;

float rr;//用来控制迷宫中通路与障碍的比例 a = (int**)malloc(sizeof(int*)*p);//动态数组 for(j=0;j

for(i=0;i

for(j=0;j

for(i=0;i

for(j=0;j

{

if(i*j==0||i==(p-1)||j==(q-1)) {

t=1;

}//边界的墙,置为

else if(rand() % 100 < rr) {

t=0;

}//迷宫中由用户输入的比例随机生成、 else { t=1; }

a[i][j]=t;

a[1][1]=a[p-2][q-2]=0; }//令出入口为

a[j] = (int*)malloc(sizeof(int)*q); for(c=0;c<(p*q);c++)

p=p+2;q=q+2;rr=100*r;//避免边界检测,扩充迷宫