P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt)

Slides:



Advertisements
Similar presentations
스택 스택 추상자료형 스택 스택의 구현 스택의 응용 한빛미디어(주).
Advertisements

C언어 응용 제 6 주 연결 자료구조.
ㅎㅎ 구조체 C++ 프로그래밍 기초 : 객체지향의 시작 구조체 사용하기 함수 매개변수로서의 구조체 구조체 포인터와 레퍼런스
제14장 동적 메모리.
희소 행렬(sparse matrix) mn matrix A ≡ A[MAX_ROWS][MAX_COLS] 희소행렬
5 순차 자료구조 방식.
제3장 게임기본모듈 Page 153 ~ 182.
Chapter 04. 연결 리스트(Linked List) 2
C로 쉽게 풀어쓴 자료구조 © Copyright 생능출판사 2011
C로 쉽게 풀어쓴 자료구조 © Copyright 생능출판사 2005
연결리스트(linked list).
제2장 배열과구조.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
Chapter 05. 연결 자료 구조.
제 4 장 연결 리스트.
Chapter 03 배열, 구조체, 포인터.
C로 쉽게 풀어쓴 자료구조 © Copyright 생능출판사 2005
자료 구조: Chapter 3 배열(1) 순천향대학교 컴퓨터공학과 하 상 호.
제3장 스택과 큐.
자료 구조: Chapter 3 (2)구조체, 포인터
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
제 4 장 L i s t.
스택(stack) SANGJI University Kwangman Ko
단순 연결 리스트 순차(sequential) 표현 연결된(linked) 표현 연속된 원소들이 일정한 거리만큼 떨어져서 저장
제 3 장 선형 리스트 3.1 선형 리스트 3.2 연결 리스트 3.3 다항식.
CHAP 4:리스트 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
강의 #6 큐(Queue).
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express Slide 1 (of 13)
제3장 스택과 큐.
Dynamic Memory and Linked List
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
Error Detection and Correction
Modulo 연산.
자료구조: CHAP 4 리스트 (1) 순천향대학교 컴퓨터공학과 하 상 호.
CHAP 4:리스트.
2007 1학기 11 프로젝트 기초 실습.
Tail-recursive Function, High-order Function
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
프로그래밍 랩 – 7주 리스트.
MicroC/OS-II 3. Memory Management ITISN Technical Lab.
14장. 포인터와 함수에 대한 이해.
제 3 장 상수와 변수
제 4 장 스택과 큐 4.1 스택(stack) 4.2 스택의 활용 4.3 큐 4.4 데큐.
Introduction To Data Structures Using C
프로그래밍 개요
어서와 C언어는 처음이지 제14장.
13. 포인터와 배열! 함께 이해하기 IT응용시스템공학과 김 형 진 교수.
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
Report #3 - due: 4/6 100*100의 2개의 희소 행렬 A, B를 전달 받아서 이들의 덧셈을 구하고, 그 결과의 행렬 C를 반환하는 add_sparse_matrix(A, B, C)를 다음과 같이 작성하라. 희소 행렬은 sparse_matrix 타입으로 표현된다.
* 프로그램을 간단히 하기 위해 malloc 성공체크는 안 함
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
자료구조: CHAP 4 리스트 (2) 순천향대학교 컴퓨터공학과 하 상 호.
제 3 강.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그래밍 기초 - 5th : 조건문(if, else if, else, switch-case) -
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
조 병 규 Software Quality Lab. 한 국 교 통 대 학 교
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
보고서 #2(제출기한: 09/23) 다음 문제를 해결하시오. (7)
토론을 위한 질문 배열의 이름에는 무엇이 저장되는가? C언어에서 배열 추상데이터의 store는 어떻게 구현 되는가?
9 브라우저 객체 모델.
동적메모리와 연결 리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
제 4 장 Record.
어서와 C언어는 처음이지 제21장.
13. 포인터와 배열! 함께 이해하기.
C++ Espresso 제15장 STL 알고리즘.
Pointers summary.
2019 2학기 9장 배열과 포인터 1. 주소, 주소연산자(&) 2. 포인터, 역참조연산자(*) 3. 배열과 포인터.
Presentation transcript:

HW #2 제출일자 : 4/8까지 jano@sejong.edu로 제출 (문제 1) P150 문제를 프로그래밍 할 것 Source file (헤더파일포함), 실행화면 (학번_이름_1.txt) 을 학번_이름_1.zip으로 묶어서 제출할 것 (문제 2) 다항식 문제를 프로그래밍 할 것 을 학번_이름_2.zip으로 묶어서 제출할 것

(문제 2) 다항식(1) 다항식의 표현 리스트를 사용해서 다항식을 표현 ai : 0이 아닌 계수 ei : 음수가 아닌 정수 지수 em-1>em-2> ... >e1>e0≥ 0 리스트를 사용해서 다항식을 표현 계수, 지수, 다음 항을 가리키는 포인터 등 3개의 필드로 구성되는 노드로 표현 계수가 정수라고 가정 typedef struct polyNode *polyPointer; typedef struct polyNode { int coef; int expon; polyPointer link; }; polyPointer a,b; coef exp link polyNode

다항식 (2) 다항식의 표현 (계속 - 입력값) a = 3x14+2x8+1 b = 8x14-3x10+10x6 a

다항식 (3) 다항식의 덧셈 포인터 a와 b가 가리키는 노드에서 시작되는 항들을 비교 b가 가리키는 항의 지수보다 a가 가리키는 항의 지수가 작으 면, b의 항과 같은 항을 만들어 결과 다항식 d에 첨가시키고 포 인터 b를 다음 노드로 이동 반대의 경우(a->expon > b->expon)는 a에 대해 수행

다항식 (4) 다항식의 덧셈 (계속) c=a+b의 처음 세 항을 생성 a->expon == b->expon

다항식 (5) polyPointer padd(polyPointer a, polyPointer b) { /* a와 b가 합산된 다항식을 반환 */ polyPointer c, rear, temp; int sum; MALLOC(rear, sizeof(*rear)); c= rear; while(a && b) switch(COMPARE(a->expon, b->expon)) { case -1: /* a->expon < b->expon */ attach(b->coef, b->expon, &rear); b = b->link; break; case 0 : /* a->expon = b->expon */ sum = a->coef + b->coef; if(sum) attach(sum, a->expon, &rear); a = a->link; b = b->link; break; case 1: /* a->expon > b->expon */ attach(a->coef, a->expon, &rear); a = a->link; } /* 리스트 a와 리스트 b의 나머지를 복사 */ for(; a; a=a->link) attach(a->coef, a->expon, &rear); for(; b; b=b->link) attach(b->coef, b->expon, &rear); rear->link = NULL; /* 필요 없는 초기 노드를 삭제 */ temp = c; c= c->link; free(temp); return c;

다항식 (6) 다항식의 덧셈 (계속) padd의 분석 고려 요소 void attach(float coefficient, int exponent, polyPointer *ptr) { /* coef=coefficient 이고 expon=exponent인 새로운 노드를 생성하고, 그것을 ptr에 의해 참조되는 노드에 첨가한다. ptr을 갱신하여 이 새로운 노드를 참조하도록 한다. */ polyPointer temp; MALLOC(temp, sizeof(*temp)); temp->coef = coefficient; temp->expon = exponent; (*ptr)->link = temp; *ptr = temp; } 리스트의 끝에 노드를 첨가 padd의 분석 고려 요소 (1) 계수 덧셈 (2) 지수 비교 (3) c를 위한 새로운 노드 생성 a와 b가 각각 m개와 n개의 항을 가지고 있을 때 연산시간 : O(m+n) 계수 덧셈 : 0≤계수 덧셈의 횟수 ≤ min{m,n} 지수 비교 : while 루프 한번 반복될 때 마다 한번씩 while루프 수행 횟수는 m+n을 넘을 수 없음 최대 m+n개의 새로운 노드가 만들어짐