chapter 3 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
CHAPTER 3 PowerPoint Presentation
Download Presentation
CHAPTER 3

Loading in 2 Seconds...

play fullscreen
1 / 61

CHAPTER 3 - PowerPoint PPT Presentation


  • 151 Views
  • Uploaded on

CHAPTER 3. 제한조건을 지닌 자료구조 스택 , 큐 , 데크. d. A. B. C. …. C. …. d. d. S. 3.1.2 큐 (queue) 의 개요. 2 개의 포인터를 가지고 한쪽 끝에서 삽입이 발생되고 다른 한쪽 끝에서 삭제가 일어나는 순차적 구조 뒤 (rear) 에서 노드가 삽입되고 앞 (front) 에서 삭제가 일어나도록 제한된다 가장 먼저 입력된 자료가 가장 먼저 출력되는 선입선출 (FIFO) 구조 적용분야

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'CHAPTER 3' - vladimir-hughes


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
chapter 3

CHAPTER 3

제한조건을 지닌자료구조

스택, 큐, 데크

3 1 2 queue

d

A

B

C

C

d

d

S

3.1.2 큐(queue)의 개요
  • 2개의 포인터를 가지고 한쪽 끝에서 삽입이 발생되고 다른 한쪽 끝에서 삭제가 일어나는 순차적 구조
  • 뒤(rear)에서 노드가 삽입되고 앞(front)에서 삭제가 일어나도록 제한된다
  • 가장 먼저 입력된 자료가 가장 먼저 출력되는 선입선출(FIFO)구조
  • 적용분야
  • 컴퓨터 운영체제에 쓰이는 작업의 계획(job scheduling)이나 시분할 방식
  • 키보드를 사용한 컴퓨터로의 입력이나 모니터, 프린트기를 사용한 출력

앞(F)

삭제

삽입

뒤(R)

3 1 2 queue1
3.1.2 큐(queue)의 운영
  • 선입선출(FIFO:First-In First-Out)
  • 제거는 앞(front)에서, 삽입은 뒤(rear)에서 발생
  • 공백상태(empty)를 구분하기 위하여
    • front : 실제 앞보다 1이 작은 위치를 가리킨다.
    • rear : 마지막으로 삽입된 원소를 가리킨다.
  • 큐(queue)의 입출력
    • 입력순서 : ABCD
    • 출력순서 : ABCD

A

B

C

D

front rear

slide4

d

C

d

d

S

3.1.2 큐(queue)의 운영

초기상태의 큐

색인 1 2 3 4 5

자료

F = 0

R = 0

slide5

3.1.2 큐(queue)의 운영

‘A’ 삽입

색인 1 2 3 4 5

d

A

C

d

d

S

자료

F = 0

R = 1

slide6

3.1.2 큐(queue)의 운영

‘B’ ‘C’ 삽입

색인 1 2 3 4 5

d

A

B

C

C

d

d

S

자료

F = 0

R = 3

slide7

3.1.2 큐(queue)의 운영

‘A’ 삭제

색인 1 2 3 4 5

d

B

C

C

d

d

S

자료

F = 1

R = 3

slide8

3.1.2 큐(queue)의 운영

‘D’ 삽입

색인 1 2 3 4 5

d

B

C

D

C

d

d

S

자료

F = 1

R = 4

slide9

3.1.2 큐(queue)의 운영

‘B’ 삭제

색인 1 2 3 4 5

d

C

D

C

d

d

S

자료

F = 2

R = 4

3 1 2 queue2
3.1.2 큐(queue)의 운영
  • 삽입 알고리즘

procedure ADDQ(item, Q, n, rear)

/* Q : 크기 n인 배열 */

if (rear = n ) then call QUEUE_FULL

rear <- rear + 1

Q(rear) <- item

end ADDQ

  • 제거 알고리즘

procedure DELETEQ(item, Q, n, rear)

/* Q : 크기 n인 배열 */

if ( front = rear ) then call QUEUE_EMPTY

front <- front + 1

item <- Q(front)

end DELETEQ

slide11
예제

크기가 5인 큐에 D를 삽입시키는 경우와 A를 삭제시키는 경우를 알고리즘을 이용해서 구해 보자. 여기서 F는 1이고 R은 3이다.

< D를 삽입시키는 경우 >

N=5, front=1, rear=3, item=D

rear을 1증가한 4값은 큐의 크기 5보다 크지 않으므로 Queue[4]에

D를 저장한다.

< A를 삭제시키는 경우 >

N=5, front=1, rear=3, front rear이므로 front를 1증가하여 Queue[2]의 A를 item에 저장하여 출력한다.

slide12

3.1.2 큐(queue)의 운영

  • 이동 큐
    • 큐가꽉찬 상태이면서 F가 0이 아닌 경우(R ear= n) 즉, 큐의 앞쪽이 비어 있는 경우 Front=0으로 하고 전체 원소를 앞쪽으로 이동(Rear = n - Front)
    • Q(1) - Q(n –Front) 까지 이동
    • 큐가 비어있는상태 (Front =Rear)
    • 큐의 과잉 상태의 단점을 보완한 것이지만 큐 내의 전체 노드를 옮기는데 시간적인 손 실이 크다
    • 특히 데이터 항목이 많으면 더욱 손실이 크다.
slide13

3.1.2 큐(queue)의 운영

  • 원형큐(circular queue)
    • 큐가 비어있는데 QUEUE_FULL발생하는 단점을 보완

(큐의 구조상의 문제점을 보완한 표현 방식)

    • 크기가 n인 배열 Q(0:n-1)를 원형으로 간주
    • front : 큐의 첫번째 원소로부터 반시계방향으로 하나 앞의 위치
    • rear : 큐에 마지막으로 삽입된 원소의 위치rear값만 변화시켜 유용 공간에 직접 삽입
slide14

3.1.2 큐(queue)의 운영

원형 큐에서 item을 입력하는 알고리즘

procedure INS_Q( Queue, item, N, front, rear ) /* 큐의 최대 크기가 N인 배열 */

rear ← (rear+1) mod N; /* 시계 방향으로 rear 전진 */

if(front=rear) then full exit; /* 큐가 꽉찬 상태 */

else Queue[rear] ← item;

end INS_Q

원형 큐에서 item을 출력하는 알고리즘

procedure DEL_Q( Queue, item, N, front, rear )

if(front=rear) then empty exit; /* 큐가 공백인 상태 */

else { front ← (front+1) mod N; /* 시계 방향으로 front 전진 */

item ← Queue(front); } /* front의 자료를 item에 저장 */

end DEL_Q

slide15
예제

크기가 5인 원형 큐에 S와 T를 삭제하려는 경우를 알고리즘을 이용해서 구해 보자.

여기서 F는 1이고 R은 3이다.

< S를 삭제시키는 경우 >

N=5, front=1, rear=3 front rear이므로 front=(1+1) mod 5 = 2

Queue[2]의 S를 item에 저장하여 출력한다.

< T를 삭제시키는 경우 >

N=5, front=2, rear=3 front rear이므로 front=(2+1) mod 5 = 3

Queue[3]의 T를 item에 저장하여 출력한다.

front=rear가 되어 큐가 빈 상태가 된다.

slide16
예제

크기가 5인 원형 큐에 W를 삽입시키고 그 상태에서 X를 삽입시키는 경우를 알고리즘을 이용해서 구해 보자.

여기서 F는 1이고 R은 4이다.

< W를 삽입시키는 경우 >

N=5, front=1, rear=4, item=W rear=(4+1) mod 5 = 0

front rear이므로 Queue[0]에 W를 저장한다.

< X를 삽입시키는 경우 >

N=5, front=1, rear=0, item=X rear=(0+1) mod 5 = 1

front=rear이므로 큐가 꽉찬 상태로 삽입이 불가능하다.

3 2 stack
3.2 스택(stack)

3.2.1스택 개요

  • 선형리스트의 특별한 경우
  • top이라는 자료구조의 끝에서만 삽입과 삭제 발생하는 자료구조
  • 후입선출 구조(LIFO : Last-In Firtst-Out)
  • 삽입순서 : A, B, C, D
  • 제거순서 : D, C, B, A

삽입(push)

제거(pop)

top

dn

.

.

d2

d1

bottom

3 2 1
3.2.1 스택의 개요

C

B

A

  • 후입선출 구조의 예1 : 기차가 차량기지를 거쳐서 철로로 진입할 수 있는 순열은?

차량기지(stack)

진행방향

slide19

3.2.1 스택의 개요

  • 후입선출 구조의 예2 : 연탄 아궁이
      • 연탄을 하나씩 쌓으면서 아궁이에 넣으므로 마지막에 넣은 3번 연탄이 가장 위에 쌓여 있다.
      • 연탄을 아궁이에서 꺼낼 때에는 위에서부터 하나씩 꺼내야 하므로 마지막에 넣은 3번 연탄을 가장 먼저 꺼내게 된다.
slide20

3.2.1 스택의 개요

  • 후입선출 구조의 예3 : 슈퍼맨의 옷 갈아입기
      • 수퍼맨이 옷을 벗는 순서 ① 장화 → ②망토 → ③빨간팬츠 → ④파란옷
      • 슈퍼맨이 옷을 입는 순서

④ 파란옷 → ③빨간팬츠 → ②망토 → ①장화

3 2 11
3.2.1스택 개요

스택

  • 선형 리스트의 한 형태로 한쪽 끝을 통하여 모든 삽입과 삭제가 일어나는 구조
  • 주기억장치나 레지스터의 일부를 할당하여 사용하는 임시적인 기억장치
  • 삽입과 삭제가 일어나는 끝을 스택의 top이라 하고 그 반대쪽 끝을 바닥(bottom)이라 한다.
  • 선입후출 (First-In Last-Out : FILO) 또는 후입선출(Last-In First-Out : LIFO)

TOP

BOTTOM

스택의 동작

  • top에서 삽입과 삭제가 이루어진다.
  • 삽입의 동작은 푸시(push)라 한다.
  • 삭제의 동작은 팝(pop)이라 한다.
  • 스택 포인터의 레지스터를 증가 혹은 감소하므로 이루어진다.

43

slide22

3.2.2스택의 운영

  • 스택의 연산
    • 스택에서의 삽입 연산 : push
    • 스택에서의 삭제 연산 : pop
slide23

3.2.2스택의 운영

  • 스택에서의 원소 삽입/삭제 과정
    • 공백 스택에 원소 A, B, C를 순서대로 삽입하고 한번 삭제하는 동안의 스택 변화
3 2 2
3.2.2스택의 운영
  • 삽입 알고리즘

procedu0.e ADD(item, STACK, n, top)

/* STACK : 크기가 n인 배열 */

if (top >= n ) then call STACK_FULL

top <- top + 1

STACK(top) <- item

end ADD

  • 제거 알고리즘

procedure DELETE(item, STACK, top)

/* STACK : 크기가 n인 배열 */

if (top <= 0 ) then call STACK_EMPTY

item <- STACK(top)

top <- top - 1

end DELETE

3 2 21
연접 리스트를 이용한 스택 표현

index stack

5

4 TOP

3

2

1

연결리스트를 이용한 스택 표현

TOP : 스택을 동작시키기 위한 포인터

3.2.2스택의 운영

D

C

B

A

TOP

D

C

A ^

B

47

slide26

3.2.2스택의 운영

  • 순차 자료구조를 이용한 스택의 구현
    • 순차 자료구조인 1차원 배열을 이용하여 구현
      • 스택의 크기 : 배열의 크기
      • 스택에 저장된 원소의 순서 : 배열 원소의 인덱스
        • 인덱스 0번 : 스택의 첫번째 원소
        • 인덱스 n-1번 : 스택의 n번째 원소
      • 변수 top : 스택에 저장된 마지막 원소에 대한 인덱스 저장
        • 공백 상태 : top = -1 (초기값)
        • 포화 상태 : top = n-1
slide27

3.2.2스택의 운영

  • 크기가 5인 1차원 배열의 스택에서 연산 수행과정
slide28

3.2.2스택의 운영

  • 역순 문자열 만들기
    • 스택의 후입선출(LIFO) 성질을 이용
      • 문자열을 순서대로 스택에 push 하기
slide29

3.2.2스택의 운영

  • 스택을 pop하여 문자열로 저장하기
  • 순차 자료구조로 구현한 스택의 장점
    • 순차 자료구조인 1차원 배열을 사용하여 쉽게 구현
  • 순차 자료구조로 구현한 스택의 단점
    • 물리적으로 크기가 고정된 배열을 사용하므로 스택의 크기 변경 어려움
    • 순차 자료구조의 단점을 그대로 가지고 있다.
slide30

3.2.2스택의 운영

  • 연결 자료구조를 이용한 스택의 구현
    • 단순 연결 리스트를 이용하여 구현
      • 스택의 원소 : 단순 연결 리스트의 노드
        • 스택 원소의 순서 : 노드의 링크 포인터로 연결
        • push : 리스트의 마지막에 노드 삽입
        • pop : 리스트의 마지막 노드 삭제
      • 변수 top : 단순 연결 리스트의 마지막 노드를 가리키는 포인터 변수
        • 초기 상태 : top = null
slide31

3.2.2스택의 운영

연결리스트를 이용한 스택 표현

  • 자료가 입력될 때와 출력될 때 top의 위치는 각 노드의 포인터를 지적해야 된다.
  • 스택을 연결 리스트로 실현하면 스택의 과잉 상태(overflow)를 막을 수 있다.
  • 스택에 사용할 기억 공간을 일단 필요한 만큼만 배당 받고, 프로그램의 실행 중에 기억 공간이 더 필요해진다면 그 만큼 더 배당 받을 수 있다.
  • 한 원소를 팝시켜서 생긴 빈 기억 장소는 메모리 관리기에 다시 반환하여 기억 장소를 효율적으로 사용하는 장점
  • 메모리 관리기를 호출하게 되어 그만큼 프로그램 실행 시간이 길어지는 단점.
slide32

3.2.2스택의 운영

  • 단순 연결 리스트의 스택에서 연산 수행과정
    • 공백 스택 생성 : create(stack);
    • 원소 A 삽입 : push(stack, A);
    • 원소 B 삽입 : push(stack, B);
slide33

3.2.2스택의 운영

  • 원소 C 삽입 :push(stack, C);
  • 원소 삭제 :pop(stack);
slide34
스택 활용 - 부프로그램

3.2.3스택의 활용

부프로그램

차후에 원상 복귀(return)시켜서 처리할 정보를 저장할 때 사용한다.

부프로그램을 호출하기 이전에 기억하고 있어야 할 내용을 스택에 저장한다.

스택에 저장된 자료는 호출한 프로그램으로 복귀하기 위한 주소이다.

slide35

3.2.3스택의 활용

  • 시스템 스택
    • 프로그램에서의 호출과 복귀에 따른 수행 순서를 관리
      • 가장 마지막에 호출된 함수가 가장 먼저 실행을 완료하고 복귀하는 후입선출 구조의 스택을 이용하여 수행순서 관리
      • 함수 호출이 발생하면 호출한 함수 수행에 필요한 지역변수, 매개변수 및 수행 후 복귀할 주소 등의 정보를 스택 프레임(stack frame)에 저장하여 시스템 스택에 삽입
      • 함수의 실행이 끝나면 시스템 스택의 top 원소(스택 프레임)를 삭제(pop)하면서 프레임에 저장되어있던 복귀주소를 확인하고 복귀
      • 함수 호출과 복귀에 따라 이 과정을 반복하여

전체 프로그램 수행이 종료되면 시스템스택은 공백 스택이 된다.

slide36
스택 활용 – 수식 계산

3.2.3스택의 운영

중위 표기법의 수식을 입력으로 받아들여 후위 표기법으로 표기한 후에 스택을 이용하면

수식을 간단하게 계산할 수 있다.

(X = ((A - ((B * C) / D)) + E)) XABC*D/-E+=

왼쪽에서 오른쪽으로 하나씩 읽어 나간다. 이때 연산자가 나타나면 왼쪽에 있는 두개의 피연산자에 대하여 연산을 하고 두개의 피연산자와 연산자를 제거하여 그 위치에 연산의 결과를 놓는다. 이러한 과정을 더 이상의 연산자가 없을 때까지 모든 연산자에 대하여 수행한다.

중위 표기를 후위 표기법으로 바꾸는 방법

중위 표기인 산술식 X=A-B*C/D+E를 계산 순서에 맞게 괄호를 묶는다.

(X = ((A - ((B * C) / D)) + E))

괄호 안의 연산자를 연산 우선 순위로 그 식의 오른쪽 괄호 밖으로 옮긴다.

괄호를 제거하면 XABC*D/-E+=가 되어 후위 표기로 변환한다.

중위 표기를 전위 표기로 변환하는 방법은 같은 방법으로 하되 연산자를 왼쪽 괄호 밖으로 옮기면 된다.

slide37

3.2.3스택의 운영

  • 수식의 표기법
    • 전위표기법(prefix notation)
      • 연산자를 앞에 표기하고 그 뒤에 피연산자를 표기하는 방법
        • 예) +AB
    • 중위표기법(infix notation)
      • 연산자를 피연산자의 가운데 표기하는 방법
        • 예) A+B
    • 후위표기법(postfix notation)
      • 연산자를 피연산자 뒤에 표기하는 방법
        • 예) AB+
slide38

3.2.3스택의 운영

  • 중위표기식의 전위표기식 변환 방법
    • 예) A*B-C/D
    •  1단계: ( (A*B)-(C/D))
    •  2단계:  

⇒ -(*(A B)/(C D))

    •  3단계:  -*AB/CD

① 수식의 각 연산자에 대해서 우선순위에 따라 괄호를 사용하여 다시 표현한다.

② 각 연산자를 그에 대응하는 왼쪽괄호의 앞으로 이동시킨다.

③ 괄호를 제거한다.

slide39

3.2.3스택의 운영

  • 중위표기식의 후위표기식 변환 방법
    • 예) A*B-C/D
    •  1단계: ( (A*B)-(C/D))
    •  2단계:  

⇒ ( (A B)*(C D)/ )-

    •  3단계:  AB*CD/-

① 수식의 각 연산자에 대해서 우선순위에 따라 괄호를 사용하여 다시 표현한다.

② 각 연산자를 그에 대응하는 오른쪽괄호의 뒤로 이동시킨다.

③ 괄호를 제거한다.

slide40

3.2.3스택의 운영

  • 스택을 사용하여 입력된 중위표기식을 후위표기식으로 변환
    • 변환 방법
  • 왼쪽 괄호를 만나면 무시하고 다음 문자를 읽는다.
  • 피연산자를 만나면 출력한다.
  • 연산자를 만나면 스택에 push한다.
  • 오른쪽괄호를 만나면 스택을 pop하여 출력한다.
  • 수식이 끝나면, 스택이 공백이 될 때까지 pop하여 출력한다.
slide41

3.2.3스택의 운영

  • 예) ((A*B)-(C/D))
slide42

3.2.3스택의 운영

  • 예) ((A*B)-(C/D))
slide43

3.2.3스택의 운영

  • 예) ((A*B)-(C/D))
slide44

3.2.3스택의 운영

  • 예) ((A*B)-(C/D))
slide45

3.2.3스택의 운영

  • 스택을 사용하여 후위표기식을 연산
    • 연산 방법
      • 수식이 끝나고 스택에 마지막으로 남아있는 원소는 전체 수식의 연산결과 값이 된다.
  • 피연산자를 만나면 스택에 push한다.
  • 연산자를 만나면 필요한 만큼의 피연산자를 스택에서 pop하여 연산하고, 연산결과를 다시 스택에 push한다.
  • 수식이 끝나면, 마지막으로 스택을 pop하여 출력한다.
slide49
예제

1.다음 중위표기 수식을 후위표기로 변환하라.

Y = A + B * C - D ** E / F + G

후위 표기식 (Y = (((A + (B * C) ) - ((D ** E) / F) ) + G) )에서 모든 연산자를 자신이 속한 괄호 바로 바깥으로 빼어 내면 된다.

YABC*+DE**F/-G+=

(Y = (A + ((B * C) - (((D ** E) / F) + G) ) ) )에서 모든 연산자를 자신이 속한 괄호 바로 바깥으로 빼어 내면 된다.

YABC*DE**F/G+- =

slide50
예제

2. X = A / B ** C * D + E

XABC ** /D*EF+=

3. A = B * C * ( E - F )

ABC *EF-*=

  • X = A / B ** C + D * E - A * C

XABC ** /DE*+AC*-=

5. X = A + ( B + C / D ) * E - F

XABCD /+E*+F-=

6. X = B * C + D * ( E - F )

XBC *DEF-*=

slide51
후위 표기 형태의 수식을 계산하는 알고리즘

procedure EVAL(E)

top ←0 //STACK을 초기화

loop

x ← next - token(E)

case

: x = '00' : return

: x is an operand call ADD(x , STACK , n , top)

: else

call DELETE(op2 , STACK , top)

call DELETE(op1 , STACK , top)

case

: x = '+' : call ADD(op1 + op2 , STACK , n , top)

: x = '-' : call ADD(op1 - op2 , STACK , n , top)

: x = '*' : call ADD(op1 * op2 , STACK , n , top)

: x = '/' : call ADD(op1 / op2 , STACK , n , top)

: x = '**' : call ADD(op1 ** op2 , STACK , n , top)

end

end

forever

end EVAL

slide52
다중스택

3.2.3스택의 운영

하나의 배열에 2개의 스택을 보관

하나의 연속된 기억 공간 속에 두 개의 스택을 서로 연결하여 운영하는 것으로서 두 개의 스택에 입력되는 양이 동시에 많은 경우를 제외하고는 유용(有用) 공간으로 인해 융통성이 있다.

삽입/삭제가 일어남에 따라 top1은 오른쪽으로 top2는 왼쪽으로 움직이게 된다. 이렇게 하면 스택의 과잉 상태를 어느 정도 방지할 수 있는데 top1 = top2이면 과잉 상태가 발생한다. 이 방식은 3개 이상의 스택 사용은 불가능하다.

하나의 배열에 n개의 스택을 보관

스택을 n개 분할할 때 크기를 알고 있으면 기대되는 크기로 차등 분배하고, 특별한 정보가 없을 경우는 동등한 크기로 균등 분배한다.

스택의 바닥의 위치는 유동적으로 운영되어진다.

스택에 top의 위치인 스택 포인터 t와 바닥의 위치인 포인터 b를 두며, 스택이 비어 있을 때는 t(i)=b(i)이고, 스택의 포화 상태 확인은 t(i)와 b(i+1)을 비교한다. 임의의 스택에 과잉 상태가 발생하게 되면 스택의 t와 b 포인터 값을 그들의 스택이 새로 위치할 곳을 지정하도록 조정하여 저장 공간을 재분배하고 스택의 자료를 옮겨 재배치한다.

slide53

3.3 데크(deque)

3.3.1 데크(deque)의 개념

Double-Ended QUEue의 약자로서 양쪽에서 입출력이 가능한 자료 구조

스택과 큐의 동작을 복합한 방식

선형 리스트 중에서 가장 일반적인 형태

한쪽 끝에서 과잉 상태가 되는 것을 최소로 하기 위하여 노드들을 리스트의 가운데 부분에 보관

3 3 2 deque
3.3.2 데크(deque)의 입출력
  • Double Ended Queue
  • 리스트의 처음과 마지막 원소에 대해 삽입과 삭제 수행
  • 스택과 큐의 혼합형 자료구조
    • L-pointer : 데크의 왼쪽끝을 가리키며, 삽입과 삭제 발생
    • R-pointer : 데크의 오른쪽끝을 가리키며, 삽입과 삭제 발생

A

B

C

D

A

B

C

D

A

B

C

D

입력제한데크:SCROLL 출력제한데크:SHELF

slide55

3.3.2 데크(deque)의 입출력

초기상태의 데크

색인 1 2 3 4 5

C

자료

E1 = 0

E2 = 0

slide56

3.3.2 데크(deque)의 입출력

E2에 ‘A’ 삽입

색인 1 2 3 4 5

A

C

자료

E1 = 0

E2 = 3

slide57

3.3.2 데크(deque)의 입출력

E1에 ‘B’ ‘C’ 삽입

색인 1 2 3 4 5

C

B

A

C

자료

E1 = 1

E2 = 3

slide58

3.3.2 데크(deque)의 입출력

E1에서 삭제하고 E2에 ‘D’ 삽입

B

A

D

C

자료

E1 = 2

E2 = 4

slide59

3.3.2 데크(deque)의 입출력

E1에서 삭제하고 E2에 ‘E’ 삽입

색인 1 2 3 4 5

A

D

C

E

자료

E1 = 3

E2 = 5

slide60

3.3.2 데크(deque)의 입출력

E2에 ‘F’ 삽입을 위해 1자리 이동 후 삽입

색인 1 2 3 4 5

A

D

E

C

F

자료

E1 = 2

E2 = 5

3 3 3
3.3.3 데크의 종류

입력 제한 데크(input restricted deque)

출력(삭제)은 양쪽에서 다 가능하지만 입력(삽입)은

어느 한쪽 끝으로만 하도록 제한한 데크

출력 제한 데크(output restricted deque)

입력은 양쪽에서 다 가능하지만 출력은

어느 한쪽 끝으로만 하도록 제한한 데크