Intersection Study - Algorithm[List]

Post on 17-Aug-2015

104 views 3 download

Transcript of Intersection Study - Algorithm[List]

ALGORITHM

ALGORITHM

Array

LIST

Circular

Etc..intro

Pointer

Doubly

ALGORITHM

LIST INTRO

What is List?

LIST INTRO

Sequential

ALGORITHM

학교 게시판 공지사항 리스트

LIST INTRO

ALGORITHM

15773

15772

15771

15770

15765

15764

List Model

LIST INTRO

ALGORITHM

15773

제거

15771

15770

15765

15764

15773

15771

15770

15765

15764

비어 있음

Delete Issue

LIST INTRO

ALGORITHM

Insert Issue

15773

15772

15771

15770

15765

15764

15774

15773

15772

15771

15765

15764

Insert front

15773

15772

15771

15770

15765

15764

15773

15772

15771

15770

15766

15765

Insert specific position

LIST INTRO

ALGORITHM

createList

리스트 생성

deleteList

리스트 삭제

isFull

리스트의 여유 공간이 있는가?

addElement

리스트 내 특정 위치에 원소 추가

removeElement

리스트 내 특정 위치의 원소 제거

clearList

리스트 내 모든 원소 제거

getListLength

리스트 내 원소의 수

getElement

리스트 내 특정 위치의 원소

Total Issue

LIST INTRO

ALGORITHM

1 2 3 4

Two Kinds of List

1 2 3 4 5

0 1 2 3 4

6

5

LIST INTRO

ALGORITHM

Array List

1 2 3 4 5

0 1 2 3 4

6

5

LIST ARRAY LIST

ALGORITHM

최대 원소 개수(maxElementCount)

현재 원소 개수(CurrentElementCount)

원소 배열 포인터(pElement)

ArrayList

data data data data …

0 1 2 3 …

data

(maxElementCount – 1)

원소(data)

ArrayListNode

Two Structures

LIST ARRAY LIST

ALGORITHM

data data … data

0 1 …

curElementCount – 1

원소 추가 가능

Insert Range

LIST ARRAY LIST

ALGORITHM

Push and Insert

LIST ARRAY LIST

data 1 2 3 4

curElementCount – 1

position position + 1

ALGORITHM

Push and Insert

LIST ARRAY LIST

data 1 2 3 4 4

curElementCount – 1

position position + 1

ALGORITHM

Push and Insert

LIST ARRAY LIST

data 1 2 3 3 4

curElementCount – 1

position position + 1

ALGORITHM

Push and Insert

LIST ARRAY LIST

data 1 2 2 3 4

curElementCount – 1

position position + 1

ALGORITHM

Push and Insert

LIST ARRAY LIST

data 1 1 2 3 4

curElementCount – 1

position position + 1

ALGORITHM

Push and Insert

LIST ARRAY LIST

data 1 1 2 3 4

new

curElementCount – 1

ALGORITHM

Delete and Pull

LIST ARRAY LIST

data 0 1 2 3 4

1 curElementCount – 1

position position + 1

ALGORITHM

Delete and Pull

LIST ARRAY LIST

data 0 2 2 3 4

curElementCount – 1

position position + 1

ALGORITHM

1

Delete and Pull

LIST ARRAY LIST

data 0 2 3 3 4

curElementCount – 1

position position + 1

ALGORITHM

1

Delete and Pull

LIST ARRAY LIST

data 0 2 3 4 4

curElementCount – 1

position position + 1

ALGORITHM

1

Delete and Pull

LIST ARRAY LIST

data 0 2 3 4

curElementCount – 1

position position + 1

ALGORITHM

1

Delete and Pull

LIST ARRAY LIST

data 0 2 3 4

curElementCount – 1

position position + 1

ALGORITHM

1

return

Linked List

1 2 3 4

LIST LINKED LIST

ALGORITHM

LIST LINKED LIST

Linked List Node

자료(Data) 링크(Link)

ALGORITHM

Various Linked List

LIST LINKED LIST

Linked List

Circular List

Doubly Linked List

ALGORITHM

Linked List

LIST LINKED LIST

Linked List

ALGORITHM

Two Structures

LIST LINKED LIST

현재 원소 개수(CurrentElementCount)

LinkedList

data

pLink

Header Nodedata

pLink

ListNode

ListNode

ALGORITHM

LIST LINKED LIST

Insert Node

LinkedList

data

pLink

Header Node

data

pLink

position-1

data

pLink

position

data

pLink

newNode

ALGORITHM

LIST LINKED LIST

Insert Node

LinkedList

data

pLink

Header Node

data

pLink

position-1

data

pLink

position

data

pLink

newNode

ALGORITHM

LIST LINKED LIST

Insert Node

LinkedList

data

pLink

Header Node

data

pLink

position-1

data

pLink

position

data

pLink

newNode

ALGORITHM

LIST LINKED LIST

Delete Node

LinkedList

data

pLink

Header Node

data

pLink

position-1

data

pLink

position+1

data

pLink

position

ALGORITHM

LIST LINKED LIST

Delete Node

LinkedList

data

pLink

Header Node

data

pLink

position-1

data

pLink

position+1

data

pLink

position

ALGORITHM

LIST LINKED LIST

Delete Node

LinkedList

data

pLink

Header Node

data

pLink

position-1

data

pLink

position+1

data

pLink

position

ALGORITHM

NULL

LIST LINKED LIST

Delete Node

LinkedList

data

pLink

Header Node

data

pLink

position-1

data

pLink

position+1

data

pLink

position

ALGORITHM

NULL

return

Circular List

LIST CIRCULAR LIST

Circular List

ALGORITHM

Two Structures

LIST CIRCULAR LIST

현재 원소 개수(CurrentElementCount)

CircularList

pLink

data

pLink

ListNode

data

pLink

ListNode

ALGORITHM

Insert Issue

LIST CIRCULAR LIST

Case 1-1 Case 1-2

curElementCount 0?

yes

No

Case 2

First Insert?

yes

No

ALGORITHM

Insert case 1-1

LIST CIRCULAR LIST

CircularList

pLink

NULL

pLink

ListNode

ALGORITHM

Insert case 1-1

LIST CIRCULAR LIST

CircularList

pLink

NULL

pLink

ListNode

ALGORITHM

Insert case 1-1

LIST CIRCULAR LIST

CircularList

pLink

NULL

pLink

ListNode

ALGORITHM

CircularList

pLink

pLink

newNode

pLink

first

pLink

last

Insert case 1-2

ALGORITHM

LIST CIRCULAR LIST

CircularList

pLink

pLink

newNode

pLink

first

pLink

last

Insert case 1-2

ALGORITHM

LIST CIRCULAR LIST

CircularList

pLink

pLink

newNode

pLink

first

pLink

last

Insert case 1-2

ALGORITHM

LIST CIRCULAR LIST

CircularList

pLink

pLink

newNode

pLink

first

pLink

last

Insert case 1-2

ALGORITHM

LIST CIRCULAR LIST

CircularList

pLink

pLink

newNode

pLink

first

pLink

last

Insert case 1-2

ALGORITHM

LIST CIRCULAR LIST

CircularList

pLink pLink

first

pLink

position-1

pLink

position

Insert case 1-2

ALGORITHM

LIST CIRCULAR LIST

pLink

newNode

CircularList

pLink pLink

first

pLink

position-1

pLink

position

Insert case 1-2

ALGORITHM

LIST CIRCULAR LIST

pLink

newNode

CircularList

pLink pLink

first

pLink

position-1

pLink

position

Insert case 1-2

ALGORITHM

LIST CIRCULAR LIST

pLink

newNode

CircularList

pLink pLink

first

pLink

position-1

pLink

position

Insert case 1-2

ALGORITHM

LIST CIRCULAR LIST

pLink

newNode

Delete Issue

ALGORITHM

LIST CIRCULAR LIST

Case 1-1 Case 1-2 Case 2

First Node Delete?

curElementCount 1?

yes

yes

No

No

CircularList

pLink

Delete case 1-1

ALGORITHM

LIST CIRCULAR LIST

pLink

ListNode

NULL

CircularList

pLink

Delete case 1-1

ALGORITHM

LIST CIRCULAR LIST

pLink

ListNode

NULL

CircularList

pLink

Delete case 1-1

ALGORITHM

LIST CIRCULAR LIST

pLink

ListNode

NULL

return

ALGORITHM

LIST CIRCULAR LIST

Delete Case 1-2

CircularList

pLink pLink

first

pLink

second

pLink

last

ALGORITHM

LIST CIRCULAR LIST

Delete Case 1-2

CircularList

pLink pLink

first

pLink

second

pLink

last

ALGORITHM

LIST CIRCULAR LIST

Delete Case 1-2

CircularList

pLink pLink

first

pLink

second

pLink

last

ALGORITHM

LIST CIRCULAR LIST

Delete Case 1-2

CircularList

pLink pLink

first

pLink

second

pLink

last

NULL

ALGORITHM

LIST CIRCULAR LIST

Delete Case 1-2

CircularList

pLink pLink

first

pLink

second

pLink

last

NULL

return

ALGORITHM

LIST CIRCULAR LIST

Delete Case 1-3

CircularList

pLink pLink

position-1

pLink

position

pLink

position+1

……

ALGORITHM

LIST CIRCULAR LIST

Delete Case 1-3

CircularList

pLink pLink

position-1

pLink

position

pLink

position+1

……

ALGORITHM

LIST CIRCULAR LIST

Delete Case 1-3

CircularList

pLink pLink

position-1

pLink

position

pLink

position+1

……

NULL

ALGORITHM

LIST CIRCULAR LIST

Delete Case 1-3

CircularList

pLink pLink

position-1

pLink

position

pLink

position+1

……

NULL

return

Doubly Linked List

ALGORITHM

LIST Doubly Linked List

Doubly Linked List

Doubly Linked List Node

자료(Data)

오른쪽 링크(Right Link)

왼쪽 링크(Left Link)

ALGORITHM

LIST Doubly Linked List

Doubly Linked List

DoublyList

data

pRLink

Header Node

pLLink

ALGORITHM

LIST Doubly Linked List

LinkedList

data

pRLink

Header Node

pRLink

position-1

pRLink

newNode

Insert Node

pRLink

position

pLLinkpLLink pLLink

pLLink

ALGORITHM

LIST Doubly Linked List

pRLink

last

pLLink

LinkedList

data

pRLink

Header Node

pRLink

position-1

pRLink

newNode

Insert Node

pRLink

position

pLLinkpLLink pLLink

pLLink

ALGORITHM

LIST Doubly Linked List

pRLink

last

pLLink

LinkedList

data

pRLink

Header Node

pRLink

position-1

pRLink

newNode

Insert Node

pRLink

position

pLLinkpLLink pLLink

pLLink

ALGORITHM

LIST Doubly Linked List

pRLink

last

pLLink

LinkedList

data

pRLink

Header Node

pRLink

position-1

pRLink

newNode

Insert Node

pRLink

position

pLLinkpLLink pLLink

pLLink

ALGORITHM

LIST Doubly Linked List

pRLink

last

pLLink

LinkedList

data

pRLink

Header Node

pRLink

position-1

pRLink

newNode

Insert Node

pRLink

position

pLLinkpLLink pLLink

pLLink

ALGORITHM

LIST Doubly Linked List

pRLink

last

pLLink

LinkedList

data

pRLink

Header Node

pRLink

position-1

pRLink

newNode

Insert Node

pRLink

position

pLLinkpLLink pLLink

pLLink

ALGORITHM

LIST Doubly Linked List

pRLink

last

pLLink

LinkedList

data

pRLink

Header Node

pRLink

position-1

pRLink

position

pRLink

position+1

pLLinkpLLink pLLink

pLLink

ALGORITHM

LIST Doubly Linked List

pRLink

last

pLLink

Delete Node

LinkedList

data

pRLink

Header Node

pRLink

position-1

pRLink

position

pRLink

position+1

pLLinkpLLink pLLink

pLLink

ALGORITHM

LIST Doubly Linked List

pRLink

last

pLLink

Delete Node

LinkedList

data

pRLink

Header Node

pRLink

position-1

pRLink

position

pRLink

position+1

pLLinkpLLink pLLink

pLLink

ALGORITHM

LIST Doubly Linked List

pRLink

last

pLLink

Delete Node

LinkedList

data

pRLink

Header Node

pRLink

position-1

pRLink

position

pRLink

position+1

pLLinkpLLink pLLink

pLLink

ALGORITHM

LIST Doubly Linked List

pRLink

last

pLLink

Delete Node

LinkedList

data

pRLink

Header Node

pRLink

position-1

pRLink

position

pRLink

position+1

pLLinkpLLink pLLink

pLLink

ALGORITHM

LIST Doubly Linked List

pRLink

last

pLLink

Delete Node

NULL

LinkedList

data

pRLink

Header Node

pRLink

position-1

pRLink

position

pRLink

position+1

pLLinkpLLink pLLink

pLLink

ALGORITHM

LIST Doubly Linked List

pRLink

last

pLLink

Delete Node

NULL

return

ALGORITHM

LIST END

THANK YOU