⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 heap.h

📁 DOS下的 小迷宫 源代码。。功能比较简单
💻 H
字号:
#include <iostream.h>
#include <stdlib.h>
class Node
{
public:
    int up;
    int down;
    int left;
    int right;
    int a;
    int b;
    int upflag;
    int downflag;
    int leftflag;
    int rightflag;
    //int *array;
    Node *pre;
    Node *next;
public:
    Node()
        :a(1),b(1),up(0),down(0),left(0),right(0),pre(NULL),next(NULL)
    {
        upflag = 0;
        downflag = 0;
        leftflag = 0;
        rightflag = 0;
    }
    void checkroad(int (*array)[10])
    {
        if(array[a-1][b]==1)
        {
            up = 1;
        }
        else
        {
            up = 0;
        }
        if(upflag)
        {
            up = 0;
        }
        if(array[a+1][b]==1)
        {
            down=1;
        }
        else
        {
            down = 0;
        }
        if(downflag)
        {
            down = 0;
        }
        if(array[a][b+1]==1)
        {
            right=1;
        }
        else
        {
            right = 0;
        }
        if(rightflag)
        {
            right = 0;
        }
        if(array[a][b-1]==1)
        {
            left=1;
        }
        else
        {
            left = 0;
        }
        if(leftflag)
        {
            left = 0;
        }
        
    }
    int GetSum()
    {
        return up+down+right+left;
    }
    void uproad(int (*Array)[10])
    {
        a=a-1;
        upflag = 0;
        downflag = 1;
        leftflag = 0;
        rightflag = 0;
        
        for(int i=0;i<=9;i++)
        {
            printf("\n");
            for(int j=0;j<=9;j++)
            {
                if(Array[i][j]==1)
                {
                    if(i==a&&j==b)
                    {
                        printf(" & ");
                    }
                    else
                    {
                        printf("   ");
                    }
                }
                else
                {
                    printf(" * ");
                }
                
            }
        }
        system("cls");
        //printf("上");
    }
    void downroad(int (*Array)[10])
    {
        a=a+1;
        downflag = 0;
        upflag = 1;
        leftflag = 0;
        rightflag = 0;
        
        for(int i=0;i<=9;i++)
        {
            printf("\n");
            for(int j=0;j<=9;j++)
            {
                if(Array[i][j]==1)
                {
                    if(i==a&&j==b)
                    {
                        printf(" & ");
                    }
                    else
                    {
                        printf("   ");
                    }
                }
                else
                {
                    printf(" * ");
                }
                
            }
        }
        system("cls");
        
        
        //	printf("下");
    }
    void leftroad(int (*Array)[10])
    {
        b=b-1;
        leftflag = 0;
        upflag = 0;
        downflag = 0;
        rightflag = 1;
        
        for(int i=0;i<=9;i++)
        {
            printf("\n");
            for(int j=0;j<=9;j++)
            {
                if(Array[i][j]==1)
                {
                    if(i==a&&j==b)
                    {
                        printf(" & ");
                    }
                    else
                    {
                        printf("   ");
                    }
                }
                else
                {
                    printf(" * ");
                }
                
            }
        }
        system("cls");
        //	printf("<---");
    }
    void rightroad(int (*Array)[10])
    {
        b=b+1;
        rightflag = 0;
        leftflag = 1;
        upflag = 0;
        downflag = 0;
        for(int i=0;i<=9;i++)
        {
            printf("\n");
            for(int j=0;j<=9;j++)
            {
                if(Array[i][j]==1)
                {
                    if(i==a&&j==b)
                    {
                        printf(" & ");
                    }
                    else
                    {
                        printf("   ");
                    }
                }
                else
                {
                    printf(" * ");
                }
                
            }
        }
        system("cls");
        //	printf("--->");
    }
    
    
};
class CHeap
{
    int up;
    int down;
    int left;
    int right;
    int x;
    int y;
    CHeap *p_head;
    CHeap *p_top;
    CHeap *pre;
    CHeap *next;
    int length;
public:
    CHeap()
    {
        p_head = NULL;
        p_top = NULL;
        length = 0;
    }
    bool pop(Node &node)
    {
        node.a = p_top->x;
        node.b = p_top->y;
        node.up = p_top->up;
        node.down = p_top->down;
        node.left = p_top->left;
        node.right = p_top->right;
        p_top = p_top->pre;
        
        length--;
        //cout << endl << "跳回到" << node.a << " " << node.b << "点" << endl; 
        
        return true;
    }
    bool push(Node &node)
    {
        CHeap *p = NULL;
        p = new CHeap;
        p->up = node.up;
        p->left = node.left;
        p->right = node.right;
        p->down = node.down;
        p->x = node.a;
        p->y = node.b;
        
        if(length == 0)
        {
            p->next = NULL ;
            p_head = p;
            p->pre= NULL;
            p_top = p;
            length++;
            return true;
        }
        p->next = NULL ;
        p->pre = p_top;
        p_top->next = p;
        p_top = p;
        length++;
        return true;
    }	
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -