12
자자자자 자자 자자자자 자자 (03 (03 자자 자자 ) ) 09. 04. 07

자료구조 실습 (03 분반 )

  • Upload
    rhys

  • View
    100

  • Download
    0

Embed Size (px)

DESCRIPTION

자료구조 실습 (03 분반 ). 09. 04. 07. Today…. 행렬의 전치 Stack Queue. 행렬의 전치. 행에 의한 전치 행에 대해 원소 가져와서 다른 행렬 원소 로 저장 C(n) = O(rows*cols) 새 원소 삽입 시 기존 원소는 이동하게 됨 열에 의한 전치 행에 의한 전치의 단점을 보완하고자 원소의 위치를 결정할 때 열 인덱스를 사용 - PowerPoint PPT Presentation

Citation preview

Page 1: 자료구조 실습  (03 분반 )

자료구조 실습 자료구조 실습 (03(03 분반분반 ))09. 04. 07

Page 2: 자료구조 실습  (03 분반 )

Today…Today…행렬의 전치StackQueue

Page 3: 자료구조 실습  (03 분반 )

행렬의 전치행렬의 전치행에 의한 전치

◦ 행에 대해 원소 <i, j, value> 가져와서 다른 행렬 원소 <j, i, value> 로 저장

◦ C(n) = O(rows*cols)◦ 새 원소 삽입 시 기존 원소는 이동하게 됨

열에 의한 전치◦ 행에 의한 전치의 단점을 보완하고자 원소의 위치를

결정할 때 열 인덱스를 사용◦ 열에 대해 원소 <i, j, value> 가져와서

다른 행렬 원소 <j, i, value> 로 저장

◦ C(n) = O(cols*elements)◦ 최악의 경우 C(n) = O(clos2*rows)

Page 4: 자료구조 실습  (03 분반 )

스택스택Top 이라고 하는 한 끝에서 모든 삽입과

삭제가 일어나는 순서 리스트LIFO(Last-in-First-out ; 후입선출 )

◦ 제일 마지막에 삽입된 원소가 가장 먼저 삭제

10 원

100 원

500 원10 원

100 원

500 원

Page 5: 자료구조 실습  (03 분반 )

스택스택 (cont’)(cont’)

데이터의 입력순서A,B,C,D,E

데이터의 출력순서E,D,C,B,A

top A top A

B top

A

B

C

D

E top

A

B

C

D top

A 입력초기상태 B 입력 … E 입력 삭제

Page 6: 자료구조 실습  (03 분반 )

스택스택 (cont’)(cont’)스택의 삽입 연산 void add(int *top, element item) {

/* 전역 stack 에 item 을 삽입 */ if (*top >= MAX_STACK_SIZE-1) {

stack_full(); return;

} stack[++*top] = item;

} A top

Page 7: 자료구조 실습  (03 분반 )

스택스택 (cont’)(cont’)스택의 삭제 연산 element delete(int *top) {

/* stack 의 최상위 원소를 반환 */ if (*top == -1)

return stack_empty(); /* 오류 key 를 반환 */

return stack[(*top)--]; }

A

B

C

D top

A

B

C

D

E top

Page 8: 자료구조 실습  (03 분반 )

큐큐한쪽 끝에서 데이터가 삽입되고 그 반대쪽

끝에서 삭제가 일어나는 순서리스트FIFO(First-in-First-out) 선입선출리스트

◦ 제일 처음에 삽입된 원소가 가장 먼저 삭제

123

1 2 3

출구

입구

Page 9: 자료구조 실습  (03 분반 )

큐큐 (cont’)(cont’)

데이터의 입력순서A,B,C,D,E

데이터의 출력순서A,B,C,D,E

front

A A

B

A

B

C

D

E

A

B

C

D

E

A 입력초기상태 B 입력 … E 입력 삭제

rearfront

rear

front

rear

front

rear

front

rear

Page 10: 자료구조 실습  (03 분반 )

큐큐 (cont’)(cont’)큐의 삽입연산 void addq(int *rear, element item) {

/* queue 에 item 을 삽입 */ if (*rear == MAX_QUEUE_SIZE-1)

queue_full(); return;

} queue[++*rear] = item;

}A

front

rear

Page 11: 자료구조 실습  (03 분반 )

큐 큐 (cont’)(cont’)큐의 삭제연산 element deleteq(int *front, int rear) {

/* queue 의 앞에서 원소를 삭제 */ if (*front == rear)

return queue_empty(); /* 에러 key 를 반환 */

return queue[++*front]; } A

B

C

D

E rear

front

Page 12: 자료구조 실습  (03 분반 )

문제문제교재에 있는 희소 행렬의 빠른 전치 함수

(fast_transper 함수 ) 를 이용하여 프로그램을 완성하시오 .◦ 희소행렬을 텍스트 파일에서 읽을 수 있도록 하세요 .◦ 희소행렬을 행렬값쌍 ( 구조체 배열 ) 으로 표현하세요 .◦ 행렬값쌍을 구현한 빠른 전치 함수로 전치합니다 .

교재에 있는 스택 삽입 /삭제 함수 (add / delete 함수 ) 를 이용하여 프로그램을 완성하시오 .

교재에 있는 큐 삽입 /삭제 함수 (addq / deleteq 함수 ) 를 이용하여 프로그램을 완성하시오 .