클래스 템플릿
클래스 템플릿
함수 템플릿과 마찬가지로 클래스도 템플릿으로 정의가 가능하다.
Stack 클래스
스택은 LIFO(Last in first out) 구조로 되어 있는 자료구조 이다.
속성
설명
T* buf
템플릿 자료형 데이터를 저장할 공간
int top
현재 데이터의 위치를 기억
int size
스택에 보관할 수 있는 데이터의 최대개수
메서드
설명
Stack()
생성자
~Stack()
소멸자
push()
데이터 하나를 저장
pop()
데이터 하나를 꺼내옴
Stack.h
#ifndef __STACK_H__
#define __STACK_H__
template <typename T>
class Stack {
T* buf;
int top;
int size;
public:
Stack(int size);
virtual ~Stack();
void push(T a);
T pop();
};
#endifStack.cpp
main.cpp
템플릿 클래스의 파일 구분
예제를 실행하면 링킹과정에서 오류가 발생한다.
템플릿 클래스는 일반적으로 하나의 헤더파일에 모든 멤버함수의 정의를 모두 작성한다.
그것이 싫다면 main.cpp에 다음과 같이 include문을 추가 한다.
Linked list 템플릿
연결리스트는 노드들의 포인터로 연속적으로 연결되어 순차적으로 접근 할 수 있는 자료구조 이다.
Node 템플릿 클래스
Node 클래스는 데이터를 저장하고 다음 노드에 대한 정보를 가지고 있다. Node.h
List 템플릿 클래스
List 클래스는 더미노드 기반의 단순연결리스트를 구현하였다.
속성
설명
Node<T>* head
더미노드
Node<T>* cur
현재 가리키는 노드 위치
Node<T>* cur
이전 노드 위치
int count
Node의 개수
메서드
설명
List()
생성자
~List()
소멸자
insert()
연결리스트의 앞에 Node를 삽입
first()
연결리스트의 첫번째 Node로 이동
next()
다음 Node로 이동
remove()
Node 제거
getCount()
Node의 개수 반환
main.cpp
사용자 정의 객체를 저장하는 리스트
이전에 만들었었던 String 클래스를 연결리스트에 사용해 보자.
main.cpp
Last updated