이중으로 연결된 목록
TRANSCRIPT
![Page 1: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/1.jpg)
이중으로 연결된 목록
아꿈싸
이재정
![Page 2: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/2.jpg)
이중 링크드 리스트
RLINK(LLINK(X)) = LLINK(RLINK(X)) = X
두번째 것이 선호할만한 주된 이유다.
![Page 3: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/3.jpg)
이중 링크드 리스트
![Page 4: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/4.jpg)
노드 제거
• RLINK(LLINK(X)) <- RLINK(X)
![Page 5: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/5.jpg)
노드제거
• LLINK(RLINK(X)) <- LLINK(X)
![Page 6: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/6.jpg)
노드제거
• AVAIL <= X
![Page 7: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/7.jpg)
친구추가
![Page 8: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/8.jpg)
친구추가
• P<=AVAIL, LLINK(P) <- X
![Page 9: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/9.jpg)
친구추가
• RLINK(P) <- RLINK(X)
![Page 10: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/10.jpg)
친구추가
• LLINK(RLINK(X)) <- P
![Page 11: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/11.jpg)
친구추가
• LLINK(RLINK(X)) <- P
![Page 12: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/12.jpg)
칼텍(Caltech)의 엘리베이터
![Page 13: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/13.jpg)
엘리베이터 시뮬레이션
![Page 14: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/14.jpg)
엘리베이터 변수
• 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: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/15.jpg)
엘리베이터 변수
• D1, 사람들이 승강기에 타고 내리는 동안이
아니면 0인 변수
• D2, 승강기가 30초 이상 움직이지 않고 한
층에 머물러 있으면 0이 되는 변수
• D3, 문이 열렸지만 아무도 타고 내리지 않
는 동안이 아니면 0인 변수
![Page 16: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/16.jpg)
이용자 변수
• IN, 이용자가 시스템에 들어온 층
• OUT, 이용자가 가고자 하는 층
• GIVEUPTIME
• INTERTIME
![Page 17: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/17.jpg)
이용자 코루틴
• U1(진입, 초기값설정) -> U2(신호대
기, CALLUP/DOWN 설정 혹은 E3, E4로
넘어감) -> U3(대기열진입, QUEUE[IN]에
유저 삽입, 엘레베이터가 오면 E4에의해
U5로 넘어감) -> U4(대기, Giveup시간만큼
대기 QUEUE[IN]에서 제거) -> U5(타
기, CALLCAR 설정) -> U6(내리
기, ELEVATOR에서 제거)
![Page 18: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/18.jpg)
엘리베이터 코루틴
• E1, E2, E3, E4, E5, E6, E7, E8, E9
![Page 19: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/19.jpg)
스케쥴링의 필요성
• E4, E5, E9가 동시에 수행될 수 도 있다.
• 링크드 리스트를 이용해서 스케쥴링을 구
현한다.
![Page 20: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/20.jpg)
자료구조
![Page 21: 이중으로 연결된 목록](https://reader033.vdocuments.mx/reader033/viewer/2022060201/559ac14e1a28ab7d378b466f/html5/thumbnails/21.jpg)
끝
• 감사합니다. ^^;