이중으로 연결된 목록

21
이중으로 연결된 목록 아꿈싸 이재정

Upload: -

Post on 07-Jul-2015

219 views

Category:

Education


1 download

TRANSCRIPT

Page 1: 이중으로 연결된 목록

이중으로 연결된 목록

아꿈싸

이재정

Page 2: 이중으로 연결된 목록

이중 링크드 리스트

RLINK(LLINK(X)) = LLINK(RLINK(X)) = X

두번째 것이 선호할만한 주된 이유다.

Page 3: 이중으로 연결된 목록

이중 링크드 리스트

Page 4: 이중으로 연결된 목록

노드 제거

• RLINK(LLINK(X)) <- RLINK(X)

Page 5: 이중으로 연결된 목록

노드제거

• LLINK(RLINK(X)) <- LLINK(X)

Page 6: 이중으로 연결된 목록

노드제거

• AVAIL <= X

Page 7: 이중으로 연결된 목록

친구추가

Page 8: 이중으로 연결된 목록

친구추가

• P<=AVAIL, LLINK(P) <- X

Page 9: 이중으로 연결된 목록

친구추가

• RLINK(P) <- RLINK(X)

Page 10: 이중으로 연결된 목록

친구추가

• LLINK(RLINK(X)) <- P

Page 11: 이중으로 연결된 목록

친구추가

• LLINK(RLINK(X)) <- P

Page 12: 이중으로 연결된 목록

칼텍(Caltech)의 엘리베이터

Page 13: 이중으로 연결된 목록

엘리베이터 시뮬레이션

Page 14: 이중으로 연결된 목록

엘리베이터 변수

• CALLUP[ j], 0 <= j <= 4

• CALLDOWN[ j], 0 <= j <= 4

• CALLCAR[ j], 0 <= j <= 4

• FLOOR

• STATE, {GOINGUP, GOINGDOWN, NEUTRAL}

• ELEVATOR, 엘레베이터에 타고있는 이용자스택

• QUEUE[ j], 0 <= j <= 4, j층에서 기다리는 이용자 대기열

Page 15: 이중으로 연결된 목록

엘리베이터 변수

• D1, 사람들이 승강기에 타고 내리는 동안이

아니면 0인 변수

• D2, 승강기가 30초 이상 움직이지 않고 한

층에 머물러 있으면 0이 되는 변수

• D3, 문이 열렸지만 아무도 타고 내리지 않

는 동안이 아니면 0인 변수

Page 16: 이중으로 연결된 목록

이용자 변수

• IN, 이용자가 시스템에 들어온 층

• OUT, 이용자가 가고자 하는 층

• GIVEUPTIME

• INTERTIME

Page 17: 이중으로 연결된 목록

이용자 코루틴

• U1(진입, 초기값설정) -> U2(신호대

기, CALLUP/DOWN 설정 혹은 E3, E4로

넘어감) -> U3(대기열진입, QUEUE[IN]에

유저 삽입, 엘레베이터가 오면 E4에의해

U5로 넘어감) -> U4(대기, Giveup시간만큼

대기 QUEUE[IN]에서 제거) -> U5(타

기, CALLCAR 설정) -> U6(내리

기, ELEVATOR에서 제거)

Page 18: 이중으로 연결된 목록

엘리베이터 코루틴

• E1, E2, E3, E4, E5, E6, E7, E8, E9

Page 19: 이중으로 연결된 목록

스케쥴링의 필요성

• E4, E5, E9가 동시에 수행될 수 도 있다.

• 링크드 리스트를 이용해서 스케쥴링을 구

현한다.

Page 20: 이중으로 연결된 목록

자료구조

Page 21: 이중으로 연결된 목록

• 감사합니다. ^^;