鱼C论坛

 找回密码
 立即注册
查看: 4174|回复: 1

[学习笔记] 一些基础算法

[复制链接]
发表于 2017-6-21 19:12:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <STDIO.H>
int visited[5] = {0};

int graph[5][5] =
{
        0,1,1,0,0,
        1,0,0,1,1,
        0,0,0,0,1,
        0,1,0,0,1,
        0,1,1,1,0
};

void DFS(int x)
{
        printf("%d\n",x);
        visited[x] = 1;
        int y;
        
        for(y = 0;y < 5;++y)
                if(graph[x][y] && !visited[y])
                        DFS(y);
}

#define MAX_SIZE 0x40

typedef struct
{
        int queue[MAX_SIZE];
        int front,rear;
}Queue,*PQueue;

void InitQueue(PQueue PQ)
{
        PQ->rear = PQ->front = 0;
}

void InQueue(PQueue PQ,int data)
{
        PQ->queue[PQ->rear] = data;
        PQ->rear = (PQ->rear + 1)%MAX_SIZE;
}

int OutQueue(PQueue PQ)
{
        int data = PQ->queue[PQ->front];
        PQ->front = (PQ->front + 1)%MAX_SIZE;
        return data;
}

int IsQueueEmpty(PQueue PQ)
{
        if(PQ->rear == PQ->front)
                return 1;
        return 0;
}

void BFS(int x)
{
        Queue q;
        int i;
        
        InitQueue(&q);
        
        InQueue(&q,x);
        visited[x] = 1;                

        while(!IsQueueEmpty(&q))
        {
                x = OutQueue(&q);
                printf("%d\n",x);
        
                for (i = 0;i < 5;++i)
                {
                        if(!visited[i] && graph[x][i])
                        {
                                InQueue(&q,i);
                                visited[i] = 1;        //标记访问
                        }
                }
                
        }
}

int main()
{
        return 0;
}

评分

参与人数 1鱼币 +1 收起 理由
小甲鱼 + 1 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-8 23:43:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 19:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表