자료구조 실습 (03 분반 )

Post on 22-Jan-2016

100 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

Today…Today…행렬의 전치StackQueue

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

◦ 행에 대해 원소 <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)

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

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

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

10 원

100 원

500 원10 원

100 원

500 원

스택스택 (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 입력 삭제

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

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

stack_full(); return;

} stack[++*top] = item;

} A top

스택스택 (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

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

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

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

123

1 2 3

출구

입구

큐큐 (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

큐큐 (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

큐 큐 (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

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

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

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

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

top related