• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天之道

            享受編程的樂(lè)趣。
            posts - 118, comments - 7, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            走迷宮程序(應(yīng)用棧)

            Posted on 2012-02-28 00:37 hoshelly 閱讀(661) 評(píng)論(0)  編輯 收藏 引用 所屬分類: DS && Algorithm
            //應(yīng)用棧來(lái)走迷宮
            #include<stdio.h>
            #include<stdlib.h>
            struct stack_node
            {
                int x;//路徑坐標(biāo)x
                int y;//路徑坐標(biāo)y
                struct stack_node *next;//指向下一結(jié)點(diǎn)
            };
            typedef struct stack_node stack_list;
            typedef stack_list *link;
            link path=NULL;//路徑棧指針
            //棧數(shù)據(jù)的存入
            link push(link stack,int x,int y)
            {
                link new_node;//新結(jié)點(diǎn)指針
               
            //分配結(jié)點(diǎn)內(nèi)存
                new_node=(link)malloc(sizeof(stack_list));
                if(!new_node)
                {
                    printf("內(nèi)存分配失敗!\n");
                    return NULL;
                }
                new_node->x=x; //存入路徑坐標(biāo)x
                new_node->y=y; //存入路徑坐標(biāo)y
                new_node->next=stack;//新結(jié)點(diǎn)指向原開(kāi)始
                stack=new_node; //新結(jié)點(diǎn)成為棧開(kāi)始
                return stack;
            }
            //棧數(shù)據(jù)的取出
            link pop(link stack,int *x,int *y)
            {
                link top;//指向棧頂端
                if(stack!=NULL)
                {
                    top=stack;
                    stack=stack->next;//棧指針指向下結(jié)點(diǎn)
                    *x=stack->x;//取出路徑坐標(biāo)x
                    *y=stack->y;//取出路徑坐標(biāo)y
                    free(top);
                    return stack;
                }
                else
                    *x=-1;
            }
            //主程序:用回溯的方法在數(shù)組迷宮找出口
            //數(shù)字0:表示是可以走的路
            //數(shù)字1:表示是墻壁,不可走的路
            //數(shù)字2:表示是走過(guò)的路
            //數(shù)字3:表示是回溯的路
            void main()
            {
                int maze[7][10]={
                    1,1,1,1,1,1,1,1,1,1,
                    1,0,1,0,1,0,0,0,0,1,
                    1,0,1,0,1,0,1,1,0,1,
                    1,0,1,0,1,1,1,0,0,1,
                    1,0,1,0,0,0,0,0,1,1,
                    1,0,0,0,1,1,1,0,0,1,
                    1,1,1,1,1,1,1,1,1,1,};
                
                int i,j;
                int x=5;//迷宮入口坐標(biāo)
                int y=8;
                while(x!=1||y!=1)//是否是迷宮出口
                {
                    maze[x][y]=2;//標(biāo)示走過(guò)的路
                    if(maze[x-1][y]<=0) //往上方走
                    {
                        x=x-1;
                        path=push(path,x,y);//存入路徑
                    }
                    else if(maze[x+1][y]<=0)//往下方走
                    {
                            x=x+1;
                            path=push(path,x,y);
                    }
                    else if(maze[x][y-1]<=0)//往左方走
                    {
                        y=y-1;
                        path=push(path,x,y);
                    }
                    else if(maze[x][y+1]<=0)//往右方走
                    {
                        y=y+1;
                        path=push(path,x,y);
                    }
                    else
                    {
                        maze[x][y]=3;
                        path=pop(path,&x,&y);//退回一步
                    }
                }
                maze[x][y]=2;
                printf("迷宮的路徑如下圖所示:\n");
                for(i=1;i<6;i++)//輸出迷宮圖形
                {
                    for(j=1;j<9;j++)
                        printf("%d",maze[i][j]);//輸出各坐標(biāo)
                    printf("\n");
                }
            }
                    
            性欧美大战久久久久久久久| 久久久久无码精品国产app| 国内精品免费久久影院| 成人资源影音先锋久久资源网| 久久免费视频1| 久久AV高潮AV无码AV| 久久久久久精品久久久久| 香蕉aa三级久久毛片| 色婷婷狠狠久久综合五月| 久久久久亚洲精品中文字幕| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 久久亚洲私人国产精品| 久久精品青青草原伊人| 国色天香久久久久久久小说| 久久天天躁狠狠躁夜夜2020一| 久久精品综合网| 亚洲国产精品18久久久久久| 伊人久久大香线焦AV综合影院 | 欧美va久久久噜噜噜久久| 久久综合亚洲欧美成人| 婷婷综合久久狠狠色99h| 办公室久久精品| 一本一本久久a久久精品综合麻豆| 亚洲国产视频久久| 国产精品九九九久久九九| 久久国产成人午夜AV影院| 一本综合久久国产二区| 国内精品九九久久久精品| 日韩亚洲欧美久久久www综合网| 色偷偷91久久综合噜噜噜噜| 久久综合亚洲欧美成人| 精品久久人人爽天天玩人人妻| 超级97碰碰碰碰久久久久最新| 99久久婷婷免费国产综合精品| 欧美久久久久久精选9999| 日产精品久久久久久久| 久久免费视频一区| 97久久天天综合色天天综合色hd | 精品国产综合区久久久久久| A级毛片无码久久精品免费| 精品久久久久久国产三级|