추상 자료형(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에서는 클래스를 통해서 구현 가능)
참조) 윤성우의 열혈 자료구조 (윤성우, 오렌지미디어)
'Data Structure > 자료구조' 카테고리의 다른 글
[자료구조] 스택(Stack) (0) | 2023.12.31 |
---|---|
[자료구조] 배열의 응용 : 희소행렬 (0) | 2023.12.26 |
[자료구조] 배열의 응용 : 다항식 (0) | 2023.12.26 |
[자료구조] 순차리스트 (0) | 2023.12.24 |
[자료구조] 배열을 이용한 리스트 구현 (0) | 2023.12.24 |