연결 자료구조
Linked Data Structure
yarn
순차 선형 리스트
• 논리적인 순서와 물리적인 순서가 같기 때문에 원소의 위치를 찾아 엑
세스하기 쉽다는 장점
• 삽입, 삭제 연산 후에 연속적인 물리 구조를 유지 하기 위해 추가 작
업이 필요하다는 단점
순차 선형 리스트 삽입, 삭제
영수 수진 경진 길준
1001 1002 1003 1004
영수 수진 나영 경진 길준
1001 1002 1003 1004 1005 나영
삽입
영수 나영 경진 길준
1001 1002 1003 1004
수진
삭제
메모리 주소 이동
메모리 주소 이동
연결 자료구조
• 원소의 논리적인 순서와 물리적인 순서가 일치 할 필요가 없다.
• 각 원소의 저장 되어있는 다음 원소를 주소에 의해 순서가 연결되는 방
식.
• 주소에 의해 순서가 연결되는 방식이 아니기 때문에 물리적인 순서를
맞추기 위한 오버헤드가 발생하지 않는다.
노드
• 원소는 연결될 다음 원소에 대한 주소를 저장해야 하기 때문에 원소
주소의 단위로 저장 해야한다.
• 노드는 원소의 값을 저장하는 데이터 필드(data field) 와 다음 노드의
주소를 저장하는 링크 필드(link field)로 구성.
data link 주소(reference)
기차놀이
희진 철수 X
data link data link data link
희진 철수
null
단순 연결리스트
• 하나의 방향으로 연결되어지는 구조
• 노드가 하나의 링크 필드에 의해서 다음 노드와 연결되는 구조를 가진
연결리스트.
단순 연결리스트의 삽입 #1
희진 철수 null
동수
data
희진
link data
철수
link data
null
link
data link
null동수null
단순 연결리스트의 삽입 #2
희진 철수 null
동수
data
희진
link data
철수
link data
null
link
data link
동수희진
희진
단순 연결리스트의 삽입 #3
동수 철수 null
동수
data
희진
link data
철수
link data
null
link
data link
동수희진
희진
단순 연결리스트의 삭제 #1
동수 철수 null
data
희진
link data
철수
link data
null
linkdata link
희진
희진
삭
제
단순 연결리스트의 삭제 #2
희진 철수 null
동수
data
희진
link data
철수
link data
null
link
data link
동수희진
희진
단순 연결리스트의 삭제 #3
희진 철수 null
동수
data
희진
link data
철수
link data
null
link
data link
동수희진
null
자유공간 리스트
• 삽입 연산시 메모리 공간을 할당하고, 삭제 연산시 사용하지 않는 노
드에 대한 메모리 공간을 처리가 필요함.
• 이러한 작업을 일일이 처리하지 않고 미리 노드를 만들어서 노드를 할당
하고 반납하게 처리.
data link data link data
null
linkFree
자유공간 리스트 할당 알고리즘
자유 공간리스트 반환 알고리즘
단순 연결 리스트 삽입 알고리즘 (첫번째 노드)
단순 연결 리스트 삽입 알고리즘(중간 노드)
노드 뒤에 삽입
단순 연결 리스트 삽입 알고리즘(마지막 노드)
단순 연결리스트 삭제 알고리즘
노드 탐색 알고리즘
원형 연결리스트
• 단순 연결리스트에서 마지막 노드가 리스트의 첫번째 노드를 가르키게
한다.
희진 철수 동민
data link data link data link
희진 철수 동민
원형 연결리스트 첫번째 노드 삽입 알고리즘
마지막노드(-1)까지 이동
마지막 노드 정보
기존 첫번째를 바라보게함
마지막노드는 새로운 첫번째를 보게함
원형 연결리스트의 삭제 알고리즘
첫번째 노드
이중 연결 리스트
• 단순 연결리스트에서 선행 노드에 접근하기 어렵다는 점을 개선하여
원형 연결리스트를 구성 했지만, 바로 이전 노드로 접근 하기위해서 전
체 리스트를 한바퀴 순회 해야하는 문제점.
• 이런 문제를 개선하기 위해서 양방향으로 순회 가능하게 구현한 리스트
를 이중연결 리스트.
datalink link
양방향 기차놀이
희진X X동민 철수 희진
null
datalink link datalink link
null
datalink link
이중연결리스트 삽입 순서
① 삽입할 노드를 가져온다
② 새 노드의 데이터 필드에 값 저장.
③ 새 노드의 왼쪽 노드의 오른쪽 링크를 새 노드의 오른쪽 링크에 저장.
④ 왼쪽 노드의 로은쪽 링크에 새 노드의 주소를 저장
⑤ 새 노드의 오른쪽 노드의 왼쪽 링크를 새 노드의 왼쪽 링크에 저장.
⑥ 오른쪽 노드의 왼쪽 링크에 새 노드의 주소를 저장.
이중 연결 리스트의 삽입 알고리즘
이중연결리스트의 삭제 순서
① 삭제할 노드의 오른쪽 노드의 주소를 삭제할 노드의 왼쪽 노드의 오른쪽
링크에 저장.
② 삭제할 노드의 왼쪽 노드의 주소를 삭제할 노드의 오른쪽 노드의 왼쪽
링크에 저장.
③ 삭제한 노드를 자유공간리스트에 반환
이중 연결리스트의 삭제 알고리즘

연결 자료구조

  • 1.
  • 2.
    순차 선형 리스트 •논리적인 순서와 물리적인 순서가 같기 때문에 원소의 위치를 찾아 엑 세스하기 쉽다는 장점 • 삽입, 삭제 연산 후에 연속적인 물리 구조를 유지 하기 위해 추가 작 업이 필요하다는 단점
  • 3.
    순차 선형 리스트삽입, 삭제 영수 수진 경진 길준 1001 1002 1003 1004 영수 수진 나영 경진 길준 1001 1002 1003 1004 1005 나영 삽입 영수 나영 경진 길준 1001 1002 1003 1004 수진 삭제 메모리 주소 이동 메모리 주소 이동
  • 4.
    연결 자료구조 • 원소의논리적인 순서와 물리적인 순서가 일치 할 필요가 없다. • 각 원소의 저장 되어있는 다음 원소를 주소에 의해 순서가 연결되는 방 식. • 주소에 의해 순서가 연결되는 방식이 아니기 때문에 물리적인 순서를 맞추기 위한 오버헤드가 발생하지 않는다.
  • 5.
    노드 • 원소는 연결될다음 원소에 대한 주소를 저장해야 하기 때문에 원소 주소의 단위로 저장 해야한다. • 노드는 원소의 값을 저장하는 데이터 필드(data field) 와 다음 노드의 주소를 저장하는 링크 필드(link field)로 구성. data link 주소(reference)
  • 6.
    기차놀이 희진 철수 X datalink data link data link 희진 철수 null
  • 7.
    단순 연결리스트 • 하나의방향으로 연결되어지는 구조 • 노드가 하나의 링크 필드에 의해서 다음 노드와 연결되는 구조를 가진 연결리스트.
  • 8.
    단순 연결리스트의 삽입#1 희진 철수 null 동수 data 희진 link data 철수 link data null link data link null동수null
  • 9.
    단순 연결리스트의 삽입#2 희진 철수 null 동수 data 희진 link data 철수 link data null link data link 동수희진 희진
  • 10.
    단순 연결리스트의 삽입#3 동수 철수 null 동수 data 희진 link data 철수 link data null link data link 동수희진 희진
  • 11.
    단순 연결리스트의 삭제#1 동수 철수 null data 희진 link data 철수 link data null linkdata link 희진 희진 삭 제
  • 12.
    단순 연결리스트의 삭제#2 희진 철수 null 동수 data 희진 link data 철수 link data null link data link 동수희진 희진
  • 13.
    단순 연결리스트의 삭제#3 희진 철수 null 동수 data 희진 link data 철수 link data null link data link 동수희진 null
  • 14.
    자유공간 리스트 • 삽입연산시 메모리 공간을 할당하고, 삭제 연산시 사용하지 않는 노 드에 대한 메모리 공간을 처리가 필요함. • 이러한 작업을 일일이 처리하지 않고 미리 노드를 만들어서 노드를 할당 하고 반납하게 처리. data link data link data null linkFree
  • 15.
  • 16.
  • 17.
    단순 연결 리스트삽입 알고리즘 (첫번째 노드)
  • 18.
    단순 연결 리스트삽입 알고리즘(중간 노드) 노드 뒤에 삽입
  • 19.
    단순 연결 리스트삽입 알고리즘(마지막 노드)
  • 20.
  • 21.
  • 22.
    원형 연결리스트 • 단순연결리스트에서 마지막 노드가 리스트의 첫번째 노드를 가르키게 한다. 희진 철수 동민 data link data link data link 희진 철수 동민
  • 23.
    원형 연결리스트 첫번째노드 삽입 알고리즘 마지막노드(-1)까지 이동 마지막 노드 정보 기존 첫번째를 바라보게함 마지막노드는 새로운 첫번째를 보게함
  • 24.
    원형 연결리스트의 삭제알고리즘 첫번째 노드
  • 25.
    이중 연결 리스트 •단순 연결리스트에서 선행 노드에 접근하기 어렵다는 점을 개선하여 원형 연결리스트를 구성 했지만, 바로 이전 노드로 접근 하기위해서 전 체 리스트를 한바퀴 순회 해야하는 문제점. • 이런 문제를 개선하기 위해서 양방향으로 순회 가능하게 구현한 리스트 를 이중연결 리스트. datalink link
  • 26.
    양방향 기차놀이 희진X X동민철수 희진 null datalink link datalink link null datalink link
  • 27.
    이중연결리스트 삽입 순서 ①삽입할 노드를 가져온다 ② 새 노드의 데이터 필드에 값 저장. ③ 새 노드의 왼쪽 노드의 오른쪽 링크를 새 노드의 오른쪽 링크에 저장. ④ 왼쪽 노드의 로은쪽 링크에 새 노드의 주소를 저장 ⑤ 새 노드의 오른쪽 노드의 왼쪽 링크를 새 노드의 왼쪽 링크에 저장. ⑥ 오른쪽 노드의 왼쪽 링크에 새 노드의 주소를 저장.
  • 28.
    이중 연결 리스트의삽입 알고리즘
  • 29.
    이중연결리스트의 삭제 순서 ①삭제할 노드의 오른쪽 노드의 주소를 삭제할 노드의 왼쪽 노드의 오른쪽 링크에 저장. ② 삭제할 노드의 왼쪽 노드의 주소를 삭제할 노드의 오른쪽 노드의 왼쪽 링크에 저장. ③ 삭제한 노드를 자유공간리스트에 반환
  • 30.