#include <stdio.h>
#include <stdlib.h>typedef struct GraphNode
{
int vertex;
GraphNode* link;
}GraphNode;
void InitGraph(bool*,GraphNode*,int);
int main()
{
int n,i;
bool* visit;
GraphNode* Head;
printf("그래프 정점의 개수를 입력하시오. ");
scanf("%d",&n);
visit=(bool*)malloc(sizeof(bool)*n);
Head=(GraphNode*)malloc(sizeof(GraphNode)*n);
InitGraph(visit,Head,n);
}
void InitGraph(bool* v,GraphNode* h,int n)
{
int i;
for(i=0;i<n;i++)
{
v[i]=false;
h[i]=NULL;
}
}
dfs를 짜고 있는데 정점갯수를 동적할당해서 하려고 하는데
visit는 그 정점을 방문유무를 따지는 배열이고
graphNode* 배열을 따로 만들어서 입력받은 n개 만큼 인덱스를 할당해서
이제 그걸 NULL을 가르키도록(공백) 해야되는데
데이터타입이 맞지 않다고 에러가 뜨는데
그럼 여기서 어떻게 NULL로 초기화 시켜야 하냐
왜 링크드리스트를 만들어놓고 그래프라고 부르지?
vertex랑 edge가 있어야 하지 않겠니?
버텍스를 링크드 리스트 처럼 노드로 만들고
나중에 edge는 함수 따로 만들어서 버텍스 연결해주는걸로 해야지 그걸 하기 위해서 링크드리스트 구조가 필요하고
뭔소리야
그니까 내말은 노드 구조체에 edge가 있을필요가 없다고 임마
포인터가 edge역할
괜춘하긴 한데 노드들을 연결시켜줄게 없네
ㅇㅇ ㄳㄳ 간선갯수는 설정할필요없음 완전그래프로 해야되는거라 ㅋㅋ
인접리스트 아나?
그래프를 인접리스트 방식으로 만들어서 해야댐
node에 node_t* adj_list 추가하면 됨 근데 데이터 입력하는게 빡칠ㄷㅅ
내가 만들라는게 그 인접리스트인데
왜 메인에 만든게 인접리스트 헤드배열임 그게 지금 가르키는게 없으니까 NULL로 하려고 하는데 데이터가 타입불일치라서 안됨... 그냥 h[i].link=NULL이렇게 해도되나
인접리스트가 왜 하나만 있음?
헤드가 포인터배열이자나
예를들어서 n에 5를 넣으면 리스트를 시작하는 헤드배열이 5개 있는걸로 디자인 한건데 잘못된건가
한 node에 인접한 다른 node들을 모아놓은게 인접리스트 아닌가?
그니까 나는 이렇게 하려고 함
0>1>2 1>0>2>4 2>0>5 이런식으로
따로 글을 써줘야 대나 여긴 한줄밖에못쓰네 댓글을 시팔
그니까 정점 a의 헤드 ........ 정점 b의 헤드 ........... 이렇게 해야대니까 포인터배열을 저렇게 설정한건데
홀인원