[자료구조] 추상 자료형(Abstract Data Type)

2023. 12. 24. 15:37·Computer Science/Data Structure
목차
  1. C언어에서 자료구조

추상 자료형(Abstract Data Type, ADT)


  • 구체적인 기능의 완성과정을 언급하지 않고, 순수하게 기능이 무엇인지를 나열한 것.

    • (지갑에서 카드를 꺼낸다 --> 지갑을 열고 카드를 꺼내고 지갑을 닫고.... 구체적인 완성과정을 언급하지 않는다)
  • 자료형은 기능이다.

  • 기능의 명세를 가리켜 자료형이라고 함. (사용 설명서)

  • 데이터, 그리고 데이터의 처리는 항상 묶여있다. 데이터만 존재할 순 없다.

    구조체를 정의하면 구조체와 관련된 연산을 담당하는 함수를 정의한다

    • ex) 지갑

      • 카드의 삽입, 추출, 동전의 삽입, 추출, 지폐의 삽입, 추출 (과정을 신경쓰지 않는다.)
      // 자료형 Wallet 정의
      typedef struct _wallet {
          int coin100Num;   // 100원짜리 동전의 수
          int bill5000Num;  // 5000원 짜리 지폐의 수
      } Wallet;
      // --> 자료형을 만들었으면 관련된 연산함수를 정의해야한다. (ex. FILE 자료형과 함수)
      // 최대한 구조체에 직접접근하지 않도록
      int TakeOutMoney(Wallet *pw, int coinNum, int billNum);
      void PutMoney(Wallet *pw, int coinNum, int billNum);
      사용자는 사실 Wallet이 어떻게 생겼는지 알 필요가 없고 돈을 넣고 빼는 기능만 알면 됨.
      따라서 ADT에 구조체 Wallet의 정의를 포함시키지 않아도 됨.
    int num = 10; // 선언와 동시에 대입(연산 과정)!
    num = num1 + num2 // 더하기(연산 과정)
    • int 자료형이 어떻게 생긴지 아는 것이 아니라 어떠한 연산이 가능한지를 알자.

C언어에서 자료구조

1) 함수들을 만들고, 호출관계를 묶어서 프로그램을 만든다.

2) Data(구조체)를 정의하고, 함수를 정의한다.

3) [자료형 정의 : 구조체(함수) 정의] + [함수 정의]

(C++이나 python, java에서는 클래스를 통해서 구현 가능)

참조) 윤성우의 열혈 자료구조 (윤성우, 오렌지미디어)

'Computer Science > Data Structure' 카테고리의 다른 글

[자료구조] 스택(Stack)  (0) 2023.12.31
[자료구조] 배열의 응용 : 희소행렬  (0) 2023.12.26
[자료구조] 배열의 응용 : 다항식  (0) 2023.12.26
[자료구조] 순차리스트  (0) 2023.12.24
[자료구조] 배열을 이용한 리스트 구현  (0) 2023.12.24
  1. C언어에서 자료구조
'Computer Science/Data Structure' 카테고리의 다른 글
  • [자료구조] 배열의 응용 : 희소행렬
  • [자료구조] 배열의 응용 : 다항식
  • [자료구조] 순차리스트
  • [자료구조] 배열을 이용한 리스트 구현
lumana
lumana
배움을 나누는 공간 https://github.com/bebeis
  • lumana
    Brute force Study
    lumana
  • 전체
    오늘
    어제
    • 분류 전체보기 (456)
      • Software Development (27)
        • Performance (0)
        • TroubleShooting (1)
        • Refactoring (0)
        • Test (8)
        • Code Style, Convetion (0)
        • DDD (0)
        • Software Engineering (18)
      • Java (71)
        • Basic (5)
        • Core (21)
        • Collection (7)
        • 멀티스레드&동시성 (13)
        • IO, Network (8)
        • Reflection, Annotation (3)
        • Modern Java(8~) (12)
        • JVM (2)
      • Spring (53)
        • Framework (12)
        • MVC (23)
        • Transaction (3)
        • AOP (11)
        • Boot (0)
        • AI (0)
      • DB Access (1)
        • Jdbc (1)
        • JdbcTemplate (0)
        • JPA (14)
        • Spring Data JPA (0)
        • QueryDSL (0)
      • Computer Science (129)
        • Data Structure (27)
        • OS (14)
        • Database (10)
        • Network (21)
        • 컴퓨터구조 (5)
        • 시스템 프로그래밍 (23)
        • Algorithm (29)
      • HTTP (8)
      • Infra (1)
        • Docker (1)
      • 프로그래밍언어론 (15)
      • Programming Language(Sub) (77)
        • Kotlin (1)
        • Python (25)
        • C++ (51)
        • JavaScript (0)
      • FE (11)
        • HTML (1)
        • CSS (9)
        • React (0)
        • Application (1)
      • Unix_Linux (0)
        • Common (0)
      • PS (13)
        • BOJ (7)
        • Tip (3)
        • 프로그래머스 (0)
        • CodeForce (0)
      • Book Review (4)
        • Clean Code (4)
      • Math (3)
        • Linear Algebra (3)
      • AI (7)
        • DL (0)
        • ML (0)
        • DA (0)
        • Concepts (7)
      • 프리코스 (4)
      • Project Review (6)
      • LegacyPosts (11)
      • 모니터 (0)
      • Diary (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
lumana
[자료구조] 추상 자료형(Abstract Data Type)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.