Carpe diem  
  Front Page
Notice | Tag | Location | Guestbook | Admin   
 
2007/06/04 10:00 2007/06/04 10:00
Linked-List - 1. 단일 연결 리스트
출처 : http://internet512.chonbuk.ac.kr/datast ··· ist5.htm
(인코딩에 약간의 문제가 있어 그냥 퍼왔습니다.)

선형리스트에서 발생하게 되는 원소들의 이동문제를 해결해주는 방법은 리스트를 구성하는 연속된 순서의 원소들이 기억장소내에서 어느곳에나 저장 가능하도록 원소들의 위치와 무관하게 원소들을 연결하여 표현하는 방법이다.

연결리스트에서는 원소들의 값이외에 포인터값이 포함되므로 리스트의 한원소의 노드(node)는 원소값을 저장하는 자료(data)부분과 다음 원소를 지적하는 포인터값을 저장 하는 링크(link) 부분으로 구성된다.
                   

단일 연결 리스트의 구조


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





<예제 1.>

단일 연결 리스트에서 다음과 같은 "리스트의 삽입"이 이루어질 때 비연속적인 리스트로 표현 하시오.

풀이)

주소

1

2

3

4

5

6

7

8

9

10

데이터

김 (*2)

링크

3

10

4  (*1)

5  (*2)

9

1

2

마지막

(*1) - 노드의 삽입으로 인해 변경된 링크 필드값
(*2) - 새로 삽입된 노드

<노드 삽입 알고리즘>

Procedure INSERT_node (Head, Item, X)
   // Head : 연결 리스트의 첫 번째 노드를 가리키는 포인터 //
   // Item : 새로 삽입할 데이터 항목 //
   // X : 임의의 노드를 가리키는 포인터 //

call GETNODE(Y)
   DATA(Y) ← Item
   if (Head=Nil) then
     Head ← Y
     LINK(Y) ← Nil
   else
     LINK(Y) ← LINK(X)
     LINK(X) ← Y
   end INSERT_node

데이터 "항목 C와 F사이에 새로운 "데이터 항목 E"를 삽입하는 과정은 다음과 같다.  이 때, X는 포인터이며 X가 가리키는 노드의 다음 노드에 새로운 노드를 삽입하기 위해 사용된다.

  • 새로운 노드를 생성한 후, 생성된 노드의 주소를 포인터 변수 Y에 대입한다.
  • 생성된 노드에 데이터 항목 E를 대입한다.
  • X가 가리키는 노드의 링크 값을 생성된 노드의 링크 부분에 대입한다.
  • 생성된 노드의 주소를 가리키는 Y값을 X가 가리키는 노드의 링크 부분에 대입한다.

<예제 2.>

단일 연결 리스트에서 다음과 같은 리스트의 삭제가 이루어질 때 비연속적인 리스트로 표현하시오.


주소

1

2

3

4

5

6

7

8

9

10

데이터

삭제

링크

5  (*1)

10

삭제

5

9

1

2

마지막

(* 1) - 노드의 삭제로 인해 변경된 링크 필드값

Procedure DELETE_node (W, X Head)
   // W : 삭제할 노드의 앞 노드를 가리키는 포인터 //
   // X : 삭제할 노드를 가리키는 포인터//
   // Head : 연결 리스트의 첫 번째 노드를 가리키는 포인터//

   if (W=Nil) then  
     Head ← LINK(Head)
   else
     LINK(W) ← LINK(X);
   call RET(X)
end DELETE_node

X가 가리키는 노드를 삭제하는 과정은 다음과 같다.
  이 때, W는 삭제하고자 하는 노드의 앞 노드를 가리킨다.

① X가 가리키는 링크 값을 W가 가리키는 노드의 링크 부분에 대입한다.
      LINK(W)←LINK(X)

② X가 가리키고 있는 노드를 가용 기억공간으로 되돌린다.
      즉 X 노드는 단순 연결 리스트에서 삭제된다.
      call RET(X)


< 단일 연결 리스트의 장단잠>

장    점

단    점

연결리스트의 모든 장점을 가지고 있으며
가장 융통성이 좋다.

대단히 복잡하고 가장 많은 공간이 필요하다.

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

name    password    homepage
 hidden


BLOG main image
Passionate, Crazy
 Notice
 Category
전체 (71)
여행 (22)
취미/여가 (8)
지식/공부 (28)
독서/감상 (6)
 TAGS
핸드메이드 캐리비안의 해적 만화 PHP 뉴스 시먼딩 스위스 jaxb MP3 Widget jsp 결혼식 네티즌 jsxb 이가와 케이 비누 치산 스타 md5 바이트 건강 자작극 배경음악 광우병 분양 태터스킨 예아스민 마무다 대학로 펀드 구매기 레몬펜 댄스 쭝샤오거리 KC 대만여행정보 영어공부 고베 야구 노력 일본 달력 나눔 뮤직비디오 구글애드센스 Beans 타이페이역 하이버네이트 휴식 메이지신궁 환형연결리스트 월드컵 날씨 ELW 지하철 호우 자바 선물 프로그래머 해모수 ASP.NET Mac 오라클 요요기공원 온라인 마우스 먹거리 성공 아기 여름휴가 영화 치한 경제 KTX 북카페 이순신 정보처리기술사 자이툰부대 용어사전 Dashboard 플래시게임 MFC 코코아 보고서 팝페라 딴수이 스린야시장 타센 iphone 고양이 더바디샵 웹마케팅 hibernate 코식이 profile
 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