자료구조
자료구조
연결 리스트(Linked List)
연결리스트
어디서 많이 본 그림
연결리스트
어디서 많이 본 그림
그 전에!
ADT : 추상 자료형
ADT : 추상 자료형
순수하게 기능이 무엇인지를 나열한 것
지갑 정의
Wallet
{
int coin100Num;
int bill5000Num;
}
지갑 연산
int TakeOutMoney(...) // 돈을 꺼내는 연산
void PutMoney(...) // 돈을 넣는 연산
지갑을 사용한다면?
int main(void)
{
Wallet myWallet; // 지갑 하나 장만!
myWallet.PutMoney(...) // 돈을 넣는다.
ret = myWallet. TakeOutMoney(...)
// 돈을 꺼낸다.
}
그런데 말입니다
그런데 말입니다
사실 사용자는 Wallet 내부는 몰라도 됨
다시 얘기하면
다시 얘기하면
Wallet
{
int coin100Num;
int bill5000Num;
}
다시 얘기하면
이 부분은
Wallet
{
int coin100Num;
int bill5000Num;
}
다시 얘기하면
이 부분은
몰라도
Wallet
{
int coin100Num;
int bill5000Num;
}
다시 얘기하면
이 부분은
몰라도
돼
Wallet
{
int coin100Num;
int bill5000Num;
}
여기서 다시
ADT : 추상 자료형
여기서 다시
ADT : 추상 자료형
여기서 다시
순수하게 기능이 무엇인지를 나열한 것
ADT : 추상 자료형
여기서 다시
순수하게 기능이 무엇인지를 나열한 것
ADT : 추상 자료형
여기서 다시
순수하게 기능이 무엇인지를 나열한 것
따라서 지갑의 내부 구조
따라서 지갑의 내부 구조
Wallet
{
int coin100Num;
int bill5000Num;
}
따라서 지갑의 내부 구조
ADT에서 제외!!
Wallet
{
int coin100Num;
int bill5000Num;
}
책 후반부에도
책 후반부에도
ADT의 개념이 계속해서 나올 것
책에서 학습 순서
책에서 학습 순서
따라서 ADT의 구조가 어려우면 복습 할 것
그럼 시작해보자.
리스트는
데이터가 나란히 저장해야..
리스트는
데이터가 나란히 저장해야..
리스트는
그게 아니라
나란히 저장된다는
나란히 저장된다는
특성을 기반으로
나란히 저장된다는
특성을 기반으로
제공할 기능을 정의
리스트 자료구조의 ADT
void ListInit(); // 초기화
void LInsert(); // 데이터 저장
int LFirst(); // 첫번째 데이터 참조
int LNext(); // 다음 데이터 참조
LData LRemove() // 데이터 삭제
int LCount() // 데이터 수
리스트 자료구조의 ADT
Documnet를 보는 느낌이라면 나쁘지 않음
void ListInit(); // 초기화
void LInsert(); // 데이터 저장
int LFirst(); // 첫번째 데이터 참조
int LNext(); // 다음 데이터 참조
LData LRemove() // 데이터 삭제
int LCount() // 데이터 수
ADT를 기반으로
ADT를 기반으로
구현
구현 방법은?
연결 리스트 정리
1 장점
1 장점
데이터 참조가 쉽다
2 단점
2 단점
배열 길이 변경 불가, 삭제 과정에서 오버헤드
3 실무
3 실무
단연 많이 사용하는 자료구조
4 ADT
4 ADT
이해가 안되면 꼭 복습하자
THANK YOU!