HW#2 #1과 동일한 방법으로 argc와 argv를 사용함

Slides:



Advertisements
Similar presentations
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
Advertisements

구조체 : Structure 와 포인터 2. 집합적 변수 생성 가능 structure_declaration ::= struct_specifier declarator_list ; struct_specifier ::= struct tag_name | struct tag_name.
스택 스택 추상자료형 스택 스택의 구현 스택의 응용 한빛미디어(주).
Computer Network Lab. Keimyung University
제 3 장 변수와 자료형.
컴퓨터 개론 및 실습 강의 9.
제 11 장 구조체.
CHAP 1:자료구조와 알고리즘.
3 장 stack and queue.
9장 부프로그램(2) 순천향대학교 컴퓨터공학부 하 상 호.
제2장 배열과구조.
D. 지뢰찾기 분석 설계 예제.
CHAP 1:자료구조와 알고리즘 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
Internet Computing KUT Youn-Hee Han
제 4 장 연결 리스트.
제 8 장  파서 생성기 YACC 사용하기.
C로 쉽게 풀어쓴 자료구조 © Copyright 생능출판사 2011
제2장 배열과구조.
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
5장. 리스트 리스트 학습목표 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
Internet Computing KUT Youn-Hee Han
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
CHAP 10:그래프 순천향대학교 하상호.
제5장 트리.
자료 구조: Chapter 3 배열(1) 순천향대학교 컴퓨터공학과 하 상 호.
자료 구조: Chapter 3 배열(1) 순천향대학교 컴퓨터공학과 하 상 호.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
4장 스택.
제5장 제어명령
스택(stack) SANGJI University Kwangman Ko
제 3 장. 배열과 구조체 및 포인터.
단순 연결 리스트 순차(sequential) 표현 연결된(linked) 표현 연속된 원소들이 일정한 거리만큼 떨어져서 저장
강의 #6 큐(Queue).
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 Slide 1 (of 27).
CHAP 6:큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
다음 주 과제 7장 읽어오기 숙제 해서 다음 주(11월 12일) 제출하기. 큐(Queue) E304호,
Chapter 9 – 구조형과 리스트 처리 Outline 9.1 자신 참조 구조형 9.2 선형 연결 리스트 9.3 리스트 연산
자료구조 김현성.
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
동적메모리와 연결리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제14장 포인터 활용 C Express.
CHAP 1:자료구조와 알고리즘 C로 쉽게 풀어쓴 자료구조 생능출판사 Slide 1 (of 28)
제 3 장 상수와 변수
CHAP 8:우선순위큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
제 11 장 전처리기.
배열과 연결리스트 연결리스트 배열 메모리 할당이 연속적이어서 인덱스 사용시 검색이 빠르다.
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
다음 주 과제 3장 읽어오기 숙제 해서 제출하기. 자료구조와 알고리즘, 순환 E304호,
Chapter 04 리스트.
Chapter 01 자료 구조와 알고리즘.
Chap. 1 Data Structure & Algorithms
선택 정렬 #define SWAP(x, y, t) {(t) = (x); (x) = (y); (y) = (t);}
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
제 8장 구조체 Hello!! C 언어 강성호 김학배 최우영.
Lecture 8 복잡한 구조 프로그래밍 프로그램 짤 때의 마음가짐 invariant 데이터 구성 list pair
Lecture 7 복잡한 구조 프로그래밍 프로그램 짤 때의 마음가짐 invariant list set
CHAP 8:우선순위큐.
자료구조 (Data Structure).
CHAP 1:자료구조와 알고리즘.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
반복문의 기능 반복문 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 while문
argc, argv 의 사용방법 #include <stdio.h>
printf("Global Korea\n");
List, ArrayList, Vector, LinkedList 가 있습니다
어서와 C언어는 처음이지 제22장.
List, ArrayList, Vector, LinkedList 가 있습니다
Presentation transcript:

HW#2 #1과 동일한 방법으로 argc와 argv를 사용함 Input (Inputfile1) 파일과 출력 방법도 #1과 동일함 학번_이름.c로 jano@sejong.edu로 제출할 것 Deadline – 5/7(수)

희소 행렬 (1) 희소 행렬의 연결 리스트 표현 희소 행렬의 각 열과 행을 헤더 노드가 있는 원형 연결 리스트로 표현 각 노드에는 헤더노드와 엔트리 노드를 나타내기 위한 tag 필드가 있음 헤더 노드 down : 열 리스트로 연결하는데 사용 right : 행 리스트로 연결하는데 사용 next : 헤드 노드들을 서로 연결하는데 사용 헤더 노드의 총 수 : max{행의 수, 열의 수} 엔트리 노드 Tag필드 외에 5개의 필드(row, col, down, right, value)가 있음 down: 같은 열에 있는 0이 아닌 다음 항 연결 right : 같은 행에 있는 0이 아닌 다음 항 연결

희소 행렬 (2) 5*4 희소 행렬 a 필요한 노드 수 numTerms개의 0이 아닌 항을 가진 numRows * numCols 희소 행렬이라면 max{numRows, numCols}+numTerms+1개

희소 행렬 a의 연결 표현 (노드의 tag필드는 생략되어 있음)

희소 행렬 (4) 희소 행렬의 표현을 위한 자료 구조 정의 #define MAX_SIZE 50 /* 최대 행렬 크기 */ typedef enum {head,entry} tagfield; typedef struct matrixNode *matrixPointer; typedef struct entryNode { int row; int col; int value; }; typedef struct matrixNode { matrixPointer down; matrixPointer right; tagfield tag; union { matrixPointer next; entryNode entry; } u; matrixPointer hdnode[MAX_SIZE];

희소 행렬 (5) 희소 행렬 입력 입력을 위해 보조 배열 hdnode를 사용 적어도 입력될 행렬의 가장 큰 차원의 크기라고 가정 변수 hdnode[i]는 열 i와 행 i에 대한 헤더 노드를 가리키는 포인터 입력 행렬을 구성하는 동안 임의의 열을 효과적으로 접근할 수 있게 함 matrixPointer mread(void) { /* 행렬을 읽어 연결 표현으로 구성한다. 전역 보조 배열 hdnode가 사용된다. */ int numRows, numCols, numTerms, numHeads, i; int row, col, value, currentRow; matrixPointer temp,last,node; /* 헤더 노드 리스트에 대한 헤더 노드를 생성한다. */ node = newNode(); node->tag = entry; node->u.entry.row = numRows; node->u.entry.col = numCols; if (!numHeads) node->right = node; else { /* 헤더 노드들을 초기화한다. */ for (i = 0; i < numHeads; i++) { temp = newNode; hdnode[i] = temp; hdnode[i]->tag = head; hdnode[i]->right = temp; hdnode[i]->u.next = temp; }

currentRow = 0; last = hdnode[0]; /* 현재 행의 마지막 노드 */ for (i = 0; i < numTerms; i++) { “Input row, col, value”; if (row > currentRow) { /* 현재 행을 종료함 */ last->right = hdnode[currentRow]; currentRow = row; last = hdnode[row]; } temp = newNode(); temp->tag = entry; temp->u.entry.row = row; temp->u.entry.col = col; temp->u.entry.value = value; last->right = temp; /* 행 리스트에 연결 */ last = temp; /* 열 리스트에 연결 */ hdnode[col]->u.next->down = temp; hdnode[col]->u.next = temp; /* 마지막 행을 종료함 */ /* 모든 열 리스트를 종료함 */ for (i = 0; i < numCols; i++) hdnode[i]->u.next->down = hdnode[i]; /* 모든 헤더 노드들을 연결함 */ for (i = 0; i < numHeads-1; i++) hdnode[i]->u.next = hdnode[i+1]; hdnode[numHeads-1]->u.next = node; node->right = hdnode[0]; return node;

희소 행렬 (6) 희소 행렬의 출력 void mwrite(matrixPointer *node) { /* 행렬을 행 우선으로 출력한다. */ int i; matrixPointer temp, head = node->right; /* 행렬의 차원 */ printf("\n numRows = %d, numCols = %d \n", node->u.entry.row, node->u.entry.col); printf(" The matrix by row, column, and value: \n\n"); for (i = 0; i < node->u.entry.row; i++) { /* 각 행에 있는 엔트리들을 출력 */ for (temp = head->right; temp != head; temp = temp->right) printf("%5d%5d%5d \n", temp->u.entry.row, temp->u.entry.col, temp->u.entry.value); head = head->u.next; /* 다음 행 */ }