게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[질문] 주소값을 반환하는 함수에 대해 질문드려요
게시물ID : programmer_13969짧은주소 복사하기
작성자 : 보급형
추천 : 0
조회수 : 641회
댓글수 : 8개
등록시간 : 2015/10/19 17:26:58
옵션
  • 베스트금지
  • 본인삭제금지
알고리즘 수업을 듣고있는데요 그래프에 관해 인접 행렬로 표현된 그래프를 받아 인접 리스트로 변환하는 함수를 만드는 과제가 나왔었습니다.
graph_list_type *cvt_garray2glist(graph_array_type *g); 라는 이름으로 함수를 작성하는 것이 과제였는데 저는 주소를 반환하는 함수에 대해 잘 알지못해

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
graph_list_type *cvt_garray2glist(graph_array_type *g) {
    int i, j;
    graph_list_type temp;    // 임시 인접 리스트
    graph_init(&temp);    // 리스트 초기화
    for (i = 0; i < g->n; i++) {
        insert_vertex(&temp, i);    // 정점 추가 // temp.n = g->n과 같음
    }
    for (i = 0; i < g->n; i++) {
        for (j = 0; j < g->n; j++) {
            if (g->a[i][j] == 1) {    // 인접 행렬에서 두 정점이 이어져있을 경우
                insert_edge(&temp, i, j);    // 인접 리스트의 두 정점에 간선 삽입
            }
        }
    }
    return &temp;
}
cs

이런 식으로 함수를 작성하고 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main(void) {            // 0  1  2  3  4  5  6  7  8  9
    graph_array_type g = { 10,{ { 010000000 ,0 },    // 0
                                { 1011000000 },    // 1
                                { 0100100000 },    // 2
                                { 0100110000 },    // 3
                                { 0011000000 },    // 4
                                { 0001001100 },    // 5
                                { 0000010100 },    // 6
                                { 0000011011 },    // 7
                                { 0000000100 },    // 8
                                { 0000000100 } } };// 9
    graph_list_type list_g;    // 인접 리스트로 표현된 그래프
 
    graph_init(&list_g);    // 인접 리스트 초기화
 
    printf("────────────리 스 트──────────── \n");
    list_g = *cvt_garray2glist(&g);    // 인접 행렬을 이용한 그래프에서
                                    // 인접 리스트를 이용한 그래프로 변환
    print_alist(&list_g);    // 인접 리스트로 표현된 그래프 표시
 
    return 0;
}
cs

이런 식으로 main()함수를 작성하였습니다. 오늘 교수님께서 보고서를 나눠주시면서 이렇게 작성하면 절대 동작하지 않는다고 함수를 호출할 때 * 붙이는 함수가 어딨냐고 하셨습니다. list_g를 포인터형으로 선언하여서 list_g = cvt_garray2glist(&g); 로 해주어야한다고 하셨는데 저는 분명 저게 작동을 하는 것을 확인하고 과제를 제출한 것인데 어째서 절대 동작할 수 있는 프로그램이 아니라고 하시는 걸까요?

제가 했을 때는 제대로 역할을 수행하였다고 말씀을 드려도 교수님은 왜 인지는 설명을 안해주시고 그냥 안된다고 틀린 것이라고만 하십니다.
왜 안되는건가요?
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호