Wallet의 ADT
int TakeoutMoney(Wallet* pw, int coinNum, int billNum)
- 전달된 주소의 지갑에서 돈을 꺼냄
- 두번째 인자로 꺼낼 동전의 수, 세번째 인자로 꺼낼 지폐의 수를 전달
- 꺼내고자 하는 돈의 총액이 반환
void PutMoney(Wallet* pw, int coinNum, int billNum)
- 전달된 주소의 지갑에 돈을 넣음
- 두번째 인자로 넣을 동전의 수, 세번째 인자로 넣을 지폐의 수 전달
- 넣은만큼 개수 증가
리스트와 연결 리스트는 같은것인가?
x
리스트는 순차리스트(배열기반), 연결 리스트(메모리 동적할당) 으로 나뉘기 때문에
리스트 자료구조는 데이터를 나란히 저장하며, 중복된 데이터의 저장을 막지 않는다
리스트의 ADT
- void ListInit(List* plist)
- 초기화 할 리스트의 주소값을 인자로 전달
- 리스트 생성 후 가장 먼저 호출되어야 함
- void LInsert(List* plist, LData data)
- 리스트에 데이터 저장
- int LFirst(List* plist, LData* pdata)
- 첫번째 데이터가 pdata가 가리키는 메모리에 저장
- int LNext(List* plist, Ldata* pdata)
- 참조된 데이터의 다음 데이터가 pdata가 가리키는 위치에 저장됨
- LData LRemove(List* plist)
- LFirst or LNext 함수의 마지막 반환 데이터 삭제
- int LCount(List* plist)
- 리스트에 저장되어있는 데이터의 수를 반환
ArrayList.h
#ifndef __ARRAY_LIST_H__
#define __ARRAY_LIST_H__
#define TRUE 1
#define FALSE 0
#define LIST_LEN 100
typedef struct __ArrayList{ //배열기반 리스트를 정의한 구조체
LData arr[LIST_LEN];
int numOfData;
int curPosition;
} ArraList;
typedef ArrayList List;
void ListInit(List* plist);
void LInsert(List* plist, LData data);
void LFirst(List* plist, LData* pdata);
void LNext(List* plist, LData* pdata);
LData LRemove(List* plist);
int LCount(List* plist);
#endif
struct 구조체 이름 : 구조체 생성
typedef : 구조체 별칭 지정
실제 리스트가 어떻게 구현되어있는지는 알 필요 없고 기능만 숙지하면 됨