迷宫求解终极版(数据结构.c).docVIP

  • 2
  • 0
  • 约1.14万字
  • 约 13页
  • 2017-12-19 发布于河南
  • 举报
迷宫求解终极版(数据结构.c)

//迷宫求解 #include stdio.h #include stdlib.h #include string.h #includemalloc.h #include time.h #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define INIT_SIZE 100 //存储空间初始分配量 #define INCREMENT 10 //存储空间分配增量 #define M 40 #define N 40//迷宫包括外墙最大行列数目 typedef int Status; /*************************栈操作*******************************/ typedef struct{ //迷宫中r行c列的位置 int r; int c; }PostType; typedef struct{ int ord; //当前位置在路径上的序号 PostType seat;//当前坐标 int di; //往下一坐标的方向 }SElemType; //栈元素类型 typedef struct{ SElemType* base;//栈基址,构造前销毁后为空 SElemType* top;//栈顶 int stackSize; //栈容量 }Stack; //栈类型 Status InitStack(Stack S){ //构造空栈s S.base=(SElemType*)malloc(INIT_SIZE *sizeof(SElemType)); if(!S.base) exit(OVERFLOW);//存储分配失败 S.top=S.base; S.stackSize=INIT_SIZE; return OK; }//InitStack Status StackEmpty(Stack S){ //若s为空返回TRUE,否则返回FALSE if(S.top==S.base) return TRUE; return FALSE; }//StackEmpty Status Push(Stack S,SElemType e){ //插入元素e为新的栈顶元素 if(S.top-S.base =S.stackSize){//栈满,加空间 S.base=(SElemType *)realloc(S.base,(S.stackSize+INCREMENT)*sizeof(SElemType)); if(!S.base) exit(OVERFLOW); //存储分配失败 S.top=S.base+S.stackSize; S.stackSize+=INCREMENT; } *S.top++=e; return OK; }//push Status Pop(Stack S,SElemType e){//若栈不空删除栈//顶元素用e返回并返回OK,否则返回ERROR if(S.top==S.base) return ERROR; e=*(--S.top); return OK; }//Pop Status DestroyStack(Stack S){//销毁栈S, free(S.base); S.top=S.base; return OK; }//DestroyStack /****************************栈操作********************************/ /******************************迷宫操作***************************/ typedef

文档评论(0)

1亿VIP精品文档

相关文档