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;//避免边界检测,扩充迷宫