1 of 50

자료구조

2 of 50

자료구조

연결 리스트(Linked List)

3 of 50

연결리스트

어디서 많이 본 그림

4 of 50

연결리스트

어디서 많이 본 그림

그 전에!

5 of 50

ADT : 추상 자료형

6 of 50

ADT : 추상 자료형

순수하게 기능이 무엇인지를 나열한 것

7 of 50

지갑 정의

Wallet

{

int coin100Num;

int bill5000Num;

}

8 of 50

지갑 연산

int TakeOutMoney(...) // 돈을 꺼내는 연산

void PutMoney(...) // 돈을 넣는 연산

9 of 50

지갑을 사용한다면?

int main(void)

{

Wallet myWallet; // 지갑 하나 장만!

myWallet.PutMoney(...) // 돈을 넣는다.

ret = myWallet. TakeOutMoney(...)

// 돈을 꺼낸다.

}

10 of 50

그런데 말입니다

11 of 50

그런데 말입니다

사실 사용자는 Wallet 내부는 몰라도 됨

12 of 50

다시 얘기하면

13 of 50

다시 얘기하면

Wallet

{

int coin100Num;

int bill5000Num;

}

14 of 50

다시 얘기하면

이 부분은

Wallet

{

int coin100Num;

int bill5000Num;

}

15 of 50

다시 얘기하면

이 부분은

몰라도

Wallet

{

int coin100Num;

int bill5000Num;

}

16 of 50

다시 얘기하면

이 부분은

몰라도

Wallet

{

int coin100Num;

int bill5000Num;

}

17 of 50

여기서 다시

18 of 50

ADT : 추상 자료형

여기서 다시

19 of 50

ADT : 추상 자료형

여기서 다시

순수하게 기능이 무엇인지를 나열한 것

20 of 50

ADT : 추상 자료형

여기서 다시

순수하게 기능이 무엇인지를 나열한 것

21 of 50

ADT : 추상 자료형

여기서 다시

순수하게 기능이 무엇인지를 나열한 것

22 of 50

따라서 지갑의 내부 구조

23 of 50

따라서 지갑의 내부 구조

Wallet

{

int coin100Num;

int bill5000Num;

}

24 of 50

따라서 지갑의 내부 구조

ADT에서 제외!!

Wallet

{

int coin100Num;

int bill5000Num;

}

25 of 50

책 후반부에도

26 of 50

책 후반부에도

ADT의 개념이 계속해서 나올 것

27 of 50

책에서 학습 순서

  1. ADT를 정의
  2. ADT를 근거로 활용(사용) 방법을 정의
  3. ADT를 근거로 자료구조를 구현

28 of 50

책에서 학습 순서

따라서 ADT의 구조가 어려우면 복습 할 것

  • ADT를 정의
  • ADT를 근거로 활용(사용) 방법을 정의
  • ADT를 근거로 자료구조를 구현

29 of 50

그럼 시작해보자.

30 of 50

리스트는

31 of 50

데이터가 나란히 저장해야..

리스트는

32 of 50

데이터가 나란히 저장해야..

리스트는

그게 아니라

33 of 50

나란히 저장된다는

34 of 50

나란히 저장된다는

특성을 기반으로

35 of 50

나란히 저장된다는

특성을 기반으로

제공할 기능을 정의

36 of 50

리스트 자료구조의 ADT

void ListInit(); // 초기화

void LInsert(); // 데이터 저장

int LFirst(); // 첫번째 데이터 참조

int LNext(); // 다음 데이터 참조

LData LRemove() // 데이터 삭제

int LCount() // 데이터 수

37 of 50

리스트 자료구조의 ADT

Documnet를 보는 느낌이라면 나쁘지 않음

void ListInit(); // 초기화

void LInsert(); // 데이터 저장

int LFirst(); // 첫번째 데이터 참조

int LNext(); // 다음 데이터 참조

LData LRemove() // 데이터 삭제

int LCount() // 데이터 수

38 of 50

ADT를 기반으로

39 of 50

ADT를 기반으로

구현

40 of 50

구현 방법은?

41 of 50

연결 리스트 정리

42 of 50

1 장점

43 of 50

1 장점

데이터 참조가 쉽다

44 of 50

2 단점

45 of 50

2 단점

배열 길이 변경 불가, 삭제 과정에서 오버헤드

46 of 50

3 실무

47 of 50

3 실무

단연 많이 사용하는 자료구조

48 of 50

4 ADT

49 of 50

4 ADT

이해가 안되면 꼭 복습하자

50 of 50

THANK YOU!