Carpe diem  
  Front Page
Notice | Tag | Location | Guestbook | Admin   
 
2007/06/04 10:10 2007/06/04 10:10
Linked-List - 2. 환형 연결 리스트

출처 : http://internet512.chonbuk.ac.kr/datast ··· ist6.htm
(인코딩에 약간의 문제가 있어 그냥 퍼왔습니다.)

단일 연결 리스트에서는 리스트의 마지막 노드의 링크 값이 널(null:^)이었지만, 환형 연결 리스트(circular linked list)는 마지막 노드의 링크의 링크 값이 널(null:^)이 아닌 리스트의 첫 번째 원소의 주소를 가리키도록 하는 구조로 되어 있다.

square03_blue.gif 환형 연결 리스트의 구조 square03_blue.gif

환형 연결 리스트에서는 노드의 시작과 끝을 구별하지 않음으로써 마지막 노드와 처음 노드가 연결되어 있음으로 임의의 노드에서 다른 모든 노드로의 접근이 가능하여 임의 노드의 검색이 가능하게 된다. 단순 연결 리스트의 경우 정보가 끊어지면 그 다음은 찾을 수가 없는데 환형 연결 리스트는 그것을 극복할 수 있다.

삽입시에 어떠한 변화가 있는지 볼 수 있다.


삽입시에 어떠한 변화가 있는지 볼 수 있다. (다른 예제)

삭제시에 어떠한 변화가 있는지 볼 수 있다.


환상 연결 리스트 L에 새로운 노드 I를 삽입시키는 방법에는 연결 리스트 L 앞에 새로운 노드를 삽입하는 경우와 연결 리스트 L 뒤에 새로운 노드를 삽입하는 방법이 있다. 그림과 같이 구성된 환상 연결 리스트에서 위의 두 가지 방법을 적용해 보면 다음과 같다.


square03_blue.gif 연결 리스트 square03_blue.gif

           square03_blue.gif 리스트 앞에 (new)노드를 삽입한 상태 square03_blue.gif

리스트 앞에 노드를 삽입하는 알고리즘

Procedure INSERT_node_FRONT(L, I)
    if L = 0 then
        [L ←I; LINK(I) ←L;]
    else
        [LINK(I) ← LINK(L);
         LINK(L) ← I;]
end  INSERT_node_FRONT

현재 노드가 2개 이상 있으므로 else 쪽의 알고리즘이 동작하게 된다. 동작순서를 살펴보면

  • 연결리스트 L 의 링크값을 연결리스트 I 의 링크값에 넘겨준다.
  • 연결리스트 L은 I를 가르키도록 한다.

가 된다. I 가 추가됨으로서 기존에 L이 가르키고 있던 D0의 주소값을 I 가 물려받게 되고 L은 원래 D0을 가르키고 있었으나, 이제 새로 추가된 I 를 가르키게 되는 것이다.


square03_blue.gif 노드 D를 삭제하기 전의 리스트 상태 square03_blue.gif


square03_blue.gif 노드 D를 삭제한 후의 리스트 상태 square03_blue.gif

Procedure DELETE_node (D, X, Y)
      if  L = 0 then empty;
         LINK(X) ← LINK(D);
      if  L = D then L ← X;
         Y ← DATA(D);
      call RET(D)
end DELETE_node

장   점

단   점

  • 임의의 노드로부터 모든 노드로의 접근이 용이하다.
  • 리스트에 노드를 삽입하거나 삭제할 때 노드 수에 관계없이 거의 일정한 시간이 소요되므로, 노드의 삽입과 삭제 연산이 편리하다.
  • 리스트의 결합(combining), 분리(splitting) 작업을 효율적으로 수행할 수 있다.

리스트를 구성하는 특정 노드를 검색하고자 할 때 잘못하면 무한 루프(infinite loop)에 빠질 가능성이 있으므로, 검색을 끝낼 수 있는 노드가 존재하여야 하며 이런 목적으로 추가된 노드를 HEAD노드라고 한다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기
Tag : ,
Track this back : http://www.evelyn.pe.kr/kor/trackback/89

name    password    homepage
 hidden


BLOG main image
Passionate, Crazy
 Notice
 Category
전체 (71)
여행 (22)
취미/여가 (8)
지식/공부 (28)
독서/감상 (6)
 TAGS
홍수 고양이 설치 jsp 방글라데시 건강 팝페라 태터스킨 경영 성공 영화 멀티캠퍼스 플래시게임 결혼식 낙동강 공부 부동산 MP3 MFC 한국디지털대학 PHP 배경음악 Spring Framework 해석 개발 일본여행 Excel MS 월드비전 근황보고 쿼리문 하이버네이트 호랑이 ELW 나를 태워라 개발툴 태터툴즈 캐리비안의 해적 보고서 학교 치한 NSString 비트 매니아 wowpen 바이트 레몬펜 아기 stripTags 행복 만화 메이지신궁 jsxb 싸이월드 KC 뮤직비디오 ELS구로 핸드메이드 무기력 더바디샵 Oracle O-fone 링크드리스트 자작극 Dame 네이버 와인 스린야시장 고3 월드컵 개편 추억 Dashboard jaxb 이순신 한글티 공감툰 고베 용어사전 앨빈 토플러 달력 주죠역 공연 노트북 분양 Beans 태그 뮤지컬 Mac 구글애드센스 광우병 스타 hibernate 자이툰부대 제거 해모수 911
 Calendar
«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
 Recent Entries
[Hibernate] criteria or...
[Hibernate] 중복된 row...
[freemarker] 숫자 콤마 빼기
고베의 일품 야경을 늦게...
간사이 지역 여행 준비하기
object param 값
[FLEX] Renderer를 이용하...
아이폰 SDK - md5
NSString 문자열 길이를 U...
JSP Get 방식 한글 parame... (3)
 Recent Comments
get방식으로 받은 한글이...
데잇 - 2009
당연히 해봤죠 ~ ^^; 여...
euni - 2009
request.setCharacterEnco...
꼼즈 - 2009
궁금하던 정보 잘 얻고 갑...
해피포터 - 2008
나는 언제 성장하는 거냐?
SEAN。 - 2008
받아들이는 관점에 따라...
euni - 2008
성장이 맞는 것 같지만,...
euni - 2008
거럼 뭐가 메카지? ㅋㅋㅋ...
euni - 2008
종합선물세트 아닐까요 ㅎㅎ
ho - 2008
성장만화 아니었습니까?
SEAN。 - 2008
 Recent Trackbacks
 Archive
2011/10
2010/06
2010/03
2009/09
2009/06
 Link Site
소니톤/개발/애니/여행/e-...
지식보다 지혜를...
 Visitor Statistics
Total : 185812
Today : 12
Yesterday : 27
태터툴즈 배너
rss