보고서 #2(제출기한: 09/23) 다음 문제를 해결하시오. (7)

Slides:



Advertisements
Similar presentations
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
Advertisements

14 장. 그래프 알고리즘 Internet Computing KUT Youn-Hee Han.
제14장 동적 메모리.
Report #5 - due: 4/13 다음 10*5의 희소 행렬 A, B를 고려하라.
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
Chapter 04. 연결 리스트(Linked List) 2
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
CHAP 10:그래프 (1) 순천향대학교 하상호.
자료 구조: Chapter 3 (2)구조체, 포인터
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
제 5 장. 스택(Stack).
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
제3장 스택과 큐.
P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt)
Dynamic Memory and Linked List
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
그래프의 기본 연산 깊이-우선 탐색(DFS; Depth-First Search) (1) 출발 정점 v를 방문
자료구조: CHAP 4 리스트 (1) 순천향대학교 컴퓨터공학과 하 상 호.
CHAP 10 : 그래프.
CHAP 10 : 그래프.
보고서 #5(제출기한: 10/14) 다음 문제를 해결하시오.
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
프로그래밍 랩 – 7주 리스트.
MicroC/OS-II 3. Memory Management ITISN Technical Lab.
11장. 1차원 배열.
Introduction To Data Structures Using C
CHAP 10:그래프 (2) 순천향대학교 하상호.
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Report #3 - due: 4/6 100*100의 2개의 희소 행렬 A, B를 전달 받아서 이들의 덧셈을 구하고, 그 결과의 행렬 C를 반환하는 add_sparse_matrix(A, B, C)를 다음과 같이 작성하라. 희소 행렬은 sparse_matrix 타입으로 표현된다.
* 프로그램을 간단히 하기 위해 malloc 성공체크는 안 함
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
연산자 (Operator).
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
제 3 강.
보고서 (due 5/8) 다음과 같은 방식으로 문제를 해결하시오. 문제 분석 알고리즘 작성 프로그램 작성 테스트 및 검증
C언어 응용 제7주 실습 해보기 제6장.
Hanoi Tower.
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
구조체 배열 실습: 평점이 최고인 학생의 정보를 출력하기
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
9장. C 언어의 핵심! 함수. 9장. C 언어의 핵심! 함수 9-1 함수의 정의와 선언 main 함수 다시 보기 : 함수의 기본 형태 { } 그림 9-1.
^^ Computer Programming 2 dmpr.cnu.ac.kr/~daygax.
함수(Function) ◈ 함수의 개념 및 사용 이유 ◈ 함수 정의, 호출 및 선언 ◈ 지역변수와 전역변수 ◈ return 문
프로그램 개발 방법론 부재 : 연습문제 (6장) 학번: 이름:김치우.
에어 PHP 입문.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
05. General Linear List – Homework
[INA240] Data Structures and Practice
[INA240] Web Programming Homework #2 [INA240] Web Programming
객체지향 프로그래밍 (강의소개)
3장 (2) 구문과 의미론 순천향대학교 컴퓨터공학과 하상호.
TERM PROJECT 최종 보고 발표 안내 2010 컴퓨터공학실험(Ⅰ).
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제 29 강 스트링(string) 다루기 s a i s . s T i h t g r i n.
29장. 템플릿과 STL 01_ 템플릿 02_ STL.
어서와 C언어는 처음이지 제21장.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
실 습 2.
Report #2 (기한: 3/16) 데이터 구조 과목의 수강생이 50명이라고 가정한다. 이 학생(학번은 2016????으로 표현됨)들의 중간 시험(0~100), 기말 시험(0~100) 성적을 성적 파일에 작성하라(프로그램을 통해서 또는 수작업으로). 성적 파일을 읽어들여서.
보고서 #4 (1) (제출기한: 10/6) #1 다음 그래프 G에 대해서 답하시오. (2*5 = 10)
7 생성자 함수.
6 객체.
Presentation transcript:

보고서 #2(제출기한: 09/23) 다음 문제를 해결하시오. (7) 10장 연습문제 #20에 나타나 있는 그래프 g를 선언문 상에서 초기화 하라. g의 타입 graph_array_type은 (int n, int a[][])의 구조체로 표현된다(n은 g에 속한 노드의 개수, a는 g의 인접 행렬 표현이다) 위에서 초기화된 g를 전달 받아서 인접 리스트로 변환하여 반환하는 함수 graph_list_type*cvt_garray2glist(graph_array_type *g)를 작성하라. graph_list_type은 인접 리스트로 표현된 그래프 타입이며, (int n, graph_node *list[])의 구조체로 표현된다. 여기서 graph_node는 (int vertex, graph_node *link)의 구조체 타입이다. 위에서 인접 리스트로 변환된 그래프를 전달 받아서 출력하는 void print_alist(graph_list_type *)를 작성하라. 위의 과정을 통합하는 main()을 작성하고 실행시켜라. 알고리즘-순천향대컴공의 네이버 카페에 회원으로 신청하고, 수락된 이후에 우선순위큐나 그래프 게시판에 적어도 한번 이상 글을 올려라(3)

Solution: 보고서 #2 (1) # define MAX 50 // 그래프의 정점의 최대 개수 typedef struct { // 인접 행렬 그래프 타입 정의 int n; // 정점의 개수 int amat[MAX][MAX]; // 인접 행렬 표현 } graph_array_type ; typedef struct gnode { // 인접리스트에 포함되는 노드 타입 정의 int v; struct gnode *link; } gnode; typedef struct { // 인접 리스트 그래프 타입 정의 int n; gnode *list[MAX]; // 인접 리스트 표현 } graph_list_type; // 함수 원형 선언 graph_list_type*cvt_garray2glist(graph_array_type *); void print_alist(graph_list_type *); int main(void) { graph_list_type *lg; graph_array_type ag = (10, {0,1,0,0,0,0,0,0,0,0}, {1,0,1,1,0,0,0,0,0,0},….} // 선언시 초기화 lg = cvt_garray2glist(&g); // 인접 행렬을 인접 리스트 버전으로 변환 print_alist(lg); // 인접 리스트 그래프를 출력 return 0; }

Solution: 보고서 #2 (2) graph_list_type*cvt_garray2glist(graph_array_type *g) { int i, j; graph_list_type *glist; gnode *node; glist = (graph_list_type *)malloc(sizeof(graph_list_type)); // 인접 리스트 생성 // 리스트를 동적 생성하는 것이 중요 // 그렇지 않으면 함수 종료시 사라짐 graph_init(glist); // 그래프 초기화 glist->n = g->n; // 정점의 개수 설정 // 각 정점에 대해서 인접 리스트를 구성한다. for (i = 0; i <g->n; i++) { // 인접 행렬의 각 행에 대해서 for (j=0; j < g->n; j++) { // 각 열에 대해서 if (g->amat[i][j] == 1) { // (i,j)의 간선이 존재하면 node = (node *) malloc(sizeof(node)); // 노드를 생성하고 node->v = j; // 초기화하고 node->link = glist->list[i]; // 정점 i의 리스트 맨 앞에 연결한다. glist->[i] = node; } return glist;

Solution: 보고서 #2 (3) void print_alist(graph_list_type *g) { int i; gnode *ptr; for (i=0; I < g->n; i++ ) { ptr = g->list[i]; // 정점 i 리스트의 첫번째 노드를 가리킨다 printf(“[%d]”, i); // “[i]”를 출력 while (ptr != null) { printf(“ -> %d”, ptr->v); // “->v”를 출력 ptr = ptr->link; // 다음 번째 노드로 이동 }

과제 수행시 유의사항 절대 복사하지 말 것 => 진위 여부에 상관 없이 -10점 처리 문제를 정확히 이해할 것 => 잘못 이해시 대폭 감점 조치 보고서를 문제 이해, 분석, 설계, 코딩, 테스트/검증, 의견의 순서로 작성할 것 => 이행하지 않으면 대폭 감점 조치 순서를 반드시 지킬 것: 테스트나 의견이 코딩 앞에 오면 안됨 코드에 주석을 달 것 => 감점 조치 코드는 한 줄에 통째로 출력된 그대로 포함시킬 것 => 두 단으로 나누거나 절단하여 붙이거나 하지 말 것 글자 크기를 작게 하지 말 것 실행 결과를 검증할 것 => 이행하지 않으면 감점 조치 주어진 입력대비 결과를 분석하여 그 정확성을 설명할 것