鱼C论坛

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

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

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

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

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

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

  3. int graph[5][5] =
  4. {
  5.         0,1,1,0,0,
  6.         1,0,0,1,1,
  7.         0,0,0,0,1,
  8.         0,1,0,0,1,
  9.         0,1,1,1,0
  10. };

  11. void DFS(int x)
  12. {
  13.         printf("%d\n",x);
  14.         visited[x] = 1;
  15.         int y;
  16.        
  17.         for(y = 0;y < 5;++y)
  18.                 if(graph[x][y] && !visited[y])
  19.                         DFS(y);
  20. }

  21. #define MAX_SIZE 0x40

  22. typedef struct
  23. {
  24.         int queue[MAX_SIZE];
  25.         int front,rear;
  26. }Queue,*PQueue;

  27. void InitQueue(PQueue PQ)
  28. {
  29.         PQ->rear = PQ->front = 0;
  30. }

  31. void InQueue(PQueue PQ,int data)
  32. {
  33.         PQ->queue[PQ->rear] = data;
  34.         PQ->rear = (PQ->rear + 1)%MAX_SIZE;
  35. }

  36. int OutQueue(PQueue PQ)
  37. {
  38.         int data = PQ->queue[PQ->front];
  39.         PQ->front = (PQ->front + 1)%MAX_SIZE;
  40.         return data;
  41. }

  42. int IsQueueEmpty(PQueue PQ)
  43. {
  44.         if(PQ->rear == PQ->front)
  45.                 return 1;
  46.         return 0;
  47. }

  48. void BFS(int x)
  49. {
  50.         Queue q;
  51.         int i;
  52.        
  53.         InitQueue(&q);
  54.        
  55.         InQueue(&q,x);
  56.         visited[x] = 1;               

  57.         while(!IsQueueEmpty(&q))
  58.         {
  59.                 x = OutQueue(&q);
  60.                 printf("%d\n",x);
  61.        
  62.                 for (i = 0;i < 5;++i)
  63.                 {
  64.                         if(!visited[i] && graph[x][i])
  65.                         {
  66.                                 InQueue(&q,i);
  67.                                 visited[i] = 1;        //标记访问
  68.                         }
  69.                 }
  70.                
  71.         }
  72. }

  73. int main()
  74. {
  75.         return 0;
  76. }
复制代码

评分

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

查看全部评分

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 21:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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