본문 바로가기

IT

그래프 전은 자료구조 아니죠 ㅎㅎ

#include <stdio.h> 

#include <stdlib.h>          

#include <string.h>           



#define MAX 8                   

#define TRUE 1    

#define FALSE 0 


typedef struct Node *P_Node;                  

typedef struct Node 

{         

P_Node link;                                      

int vtx;                                                

}Node; 



P_Node graph[MAX];                    

short int mark[MAX];                

int Que[MAX];                              


int matrix[MAX][MAX]={          

{0,1,1,0,0,0,0,0}, 

{1,0,0,1,1,0,0,0}, 

{1,0,0,0,0,1,1,0}, 

{0,1,0,0,0,0,0,1}, 

{0,1,0,0,0,0,0,1}, 

{0,0,1,0,0,0,0,1}, 

{0,0,1,0,0,0,0,1}, 

{0,0,0,1,1,1,1,0} 

}; 



void init();                 

void Clear_mark();         

       

void bfs(int v);                  


void enq(int *rear,int vtx); 

int deq(int *front); 




int main() 

{                    

Clear_mark();          

init();        

bfs(0); 

puts(""); 


return 0; 




void init()  

 { 

int x,y; 



P_Node move;        

P_Node st;        

P_Node tmp;         

for(x=0; x<MAX; x++) 

st = graph[x];        


for(y=0; y<MAX; y++) 

if(matrix[x][y] != FALSE)

tmp = (P_Node)malloc(sizeof(Node)); 

tmp->vtx = y;      


if(graph[x] == st)   

{      

move = tmp;     

graph[x] = tmp; 

else      

{      

move->link = tmp; 

move = tmp; 

tmp->link = NULL;     

}


void bfs(int v) 

P_Node w; 

int front,rear; 

front = rear = -1; 


printf("%3d",v); 

mark[v] = TRUE; 

enq(&rear, v); 

while(front != rear) 

v = deq(&front); 


for(w = graph[v]; w; w = w->link) 

if(!mark[w->vtx])  // 마킹되지않은 정점이면(FALSE) 

printf("%3d",w->vtx); 

enq(&rear,w->vtx); 

mark[w->vtx] = TRUE; 


 

void enq(int *rear,int vtx)      

*rear = (*rear)%MAX;    

Que[++(*rear)] = vtx; 


int deq(int *front)     


return Que[++(*front)%MAX]; 


void Clear_mark()      

int i; 

for(i=0; i<MAX; i++) 

mark[i] = FALSE; 

'IT' 카테고리의 다른 글

winner tree  (0) 2014.05.14
dfs  (0) 2014.05.14
자료구조는 그래프 부터  (0) 2014.05.14
이 역시 그래프  (0) 2014.05.14
그래프 관련인듯  (0) 2014.05.14