三九宝宝网宝宝百科宝宝知识

请教高手C数据结构回溯算法解迷宫问题

02月09日 编辑 39baobao.com

[零基础学习数据结构哪个教材好]第一本书其实并不一定要选择业界非常经典的书籍,经典固然好,但往往都是讲的太全面,过于理论。数据结构本来就很难,对新人不是很友好,初学者学起来可能会感觉非常枯燥,很容易坚持不...+阅读

//迷宫用栈做的 #include "stdio.h" #include "stdlib.h" #define INITSIZE 100 #define STACKINCRESMENT 10 #define WALL 9999 struct stack { int *base; int *top; int size; }; struct mi { int val; bool tag; int di; }; void init_stack(stack *); void push(stack*,int); int pop(stack*); int getop(stack*); int palace(stack*, mi p[10][10]); int main() { int e; int ch; struct mi p[10][10]; for(int i=0;i<10;i++) { p[0][i].val = 0; p[i][0].val = 0; p[9][i].val = 0; p[i][9].val = 0; } for(int j=1;j<9;j++) { for(int k=1;k<9;k++) { p[j][k].val = 1; } } p[1][3].val = p[1][7].val =0; p[2][3].val = p[2][7].val =0; p[3][5].val = p[3][6].val =0; p[4][2].val = p[4][3].val = p[4][4].val =0; p[5][4].val = 0; p[6][2].val = p[6][6].val =0; p[7][2].val = p[7][3].val = p[7][4].val =0; p[7][6].val = p[7][7].val =0; p[8][1].val = 0; for(int m=0;m<10;m++) { for(int n=0;n<10;n++) { printf(" %d ",p[m][n]); p[m][n].tag =0; p[m][n].di =0; } printf("\n"); } struct stack *s = (stack*)malloc(sizeof(stack)); init_stack(s); palace(s, p); printf("\none path is: \n"); for(int a=0;*s->base<89;s->base++) { printf("-a"); printf("%d",*s->base); } return 0; } void init_stack(stack *s) { s->base = (int*)malloc(INITSIZE*sizeof(stack)); if(!s->base) printf("malloc error:"); *s->base++ = 0;//栈底为0 s->top = s->base; s->size = INITSIZE; } void push(stack* s, int e) { if(s->top - s->base >= INITSIZE) { s->base = (int*)realloc(s->base,(s->size+STACKINCRESMENT)*sizeof(stack)); s->top = s->base + s->size; s->size += STACKINCRESMENT; } *s->top++ = e; } int pop(stack* s) { if(s->top == s->base) printf("error\n"); int e = 0; e = *--s->top; *s->top = NULL; return e; } int getop(stack* s) { if(s->top == s->base) printf("error\n"); int e = 0; stack *p = s; e = *(--p->top); ++p->top; return e; } int palace(stack* s, mi p[10][10]) { int i=1; int j=1; int k; int r; push(s,i*10+j); j++; do { r=getop(s); if(r==88) return 0; if(p[i][j].val>0 && p[i][j].di<1) { push(s,i*10+j); p[i][j].tag = 1; p[i][j].di = 1; j++; } else { k = getop(s); i = k/10; j = k%10; if(p[i][j].di==1 && (p[i][j].val>0)) { p[i][j].di++; i++; } if(p[i][j].di==2 && (p[i][j].val>0)) { p[i][j].di++; j--; if(p[i][j].di>0) { k = pop(s);} } } }while(1); }

以下为关联文档:

计算机考研数据结构15分啊 很多啊 而且通常都是分三小题 能做一题就五分 而且编程题难度不会很大的 15分很多好不好 背代码肯定不可取 考研怎么会考书上一样的代码 肯定要好几个结合在一起 一...

数据结构知识归纳第一章:数据结构概述 一、什么是数据结构 1、作者开篇谈到: 一般来说解决一个具体的问题时,大致需要经过下列几个步骤:首先要从具体的问题抽象出一个适当的数学模型,然后设计一个...

数据结构是什么数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据...

数据结构:是什么数据结构是什么?数据和结构有什么关系?数据结构首先要定义两个东西,一个是数据,一个是结构.数据是一组有意义的信息.把数据作为信息单元.结构,就是信息单元和信息单元之间的构成...

数据结构都有哪些结构常用数据结构 数组 (Array) 在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中, 数组属于构造...

数据结构题cdatalist headlist;int count=1;char** arrays={"data1","data2","data3","data4","data5","data6","data7","data8","data9"};for(datalist* nextlist=&headlist;countnext,count++) { strcpy...

数据结构的请进第一题 这不是算法 因为当n=0时 m=无穷 第二题 1、1 2、O(n) 3、O(n^2) 一个算法应该具有以下五个重要的特征: 1、有穷性: 一个算法必须保证执行有限步之后结束; 2、确切性: 算...

数据结构问题????数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率的算...

数据结构哈希算法H(22)=(3*22)mod 11=0; H(41)=2; H(53)=5; H(46)=6; H(30)=2;冲突;H1=(H(key)+d1)MOD m = (2+1((7*30)MOD 10+1)) MOD 11=3; H(13)=6;冲突;H1=(6+1(1+1))=8; H(01)=3;冲突;H1=(3+1...

推荐阅读
图文推荐