深度優先搜尋

來源:互聯網
上載者:User

//深度優先搜尋
#include<stdio.h>
#include<malloc.h>

int n;

struct adj_list
{
   int v;
   //char data;
   struct adj_list *next;      
};

typedef struct adj_list NODE;

NODE node[100];
//int pren[100];
//int postn[100];
int tra[100];

void dfs (int v,NODE node[],int n,bool b[],int tra[],int &count)
{
  NODE *p;
  b[v]=1;tra[count++]=v;
  //pren[v]=++prefdn;
  p=node[v].next;
  while(p!=NULL)
  {
   if(!b[p->v])
   dfs(p->v,node,n,b,tra,count);
   p=p->next;             
  }    
}

void traver_dfs(NODE node[],int n,int tra[])
{
  int i,count;
  bool *b=new bool[n];
  count=0;
  for(i=0;i<n;i++)
  b[i]=0;
  for(i=0;i<n;i++)
  if(!b[i])
  dfs(i,node,n,b,tra,count);
  delete b;    
}

int main()
{
    int r,j,k,i;
    NODE *q,*pre;
    while(scanf("%d",&n)!=EOF)
    {
          for(i=0;i<n;i++)
          {
          node[i].next=NULL;
          pre=&node[i];
          scanf("%d",&k);
          for(j=0;j<k;j++)
          {
          scanf("%d",&r);
          q=(NODE *)malloc(sizeof(NODE));
          q->v=r;
          q->next=pre->next;
          pre->next=q;
          pre=q;
          }              
          } 
          traver_dfs(node,n,tra);
          printf("深度優先搜尋的結果:/n");
          for(i=0;i<n;i++)
          printf("%d ",tra[i]);
          printf("/n");      
    }
}
/*
6
3
1 2 3
3
0 4 5
2
0 3
3
0 2 4
3
1 3 5
2
1 4
深度優先搜尋的結果:
0 1 4 3 2 5
*/
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.