5.4.3 스택 테스트

스택을 테스트하는 코드를 작성합시다.

int main()
{
    EHStack *ehs = 0;
    Book *book = 0;

먼저 스택을 동적으로 생성합니다.

    ehs = New_EHStack();

적당히 자료를 스택에 보관합니다. 여기에서는 세 개의 도서를 보관할게요.

    EHStack_Push(ehs,New_Book("C언어","홍길동",10));
    EHStack_Push(ehs,New_Book("C++언어","강감찬",20));
    EHStack_Push(ehs,New_Book("자료구조","김구",5));

이제 하나의 자료를 꺼내어 봅시다. 가장 최근에 보관한 자료는 “자료구조”입니다.

    book = (Book *)EHStack_Pop(ehs);
    if(book)
    {
        Book_View(book);
        Delete_Book(book);
    }

두 개의 도서 정보를 추가로 보관할게요.

    EHStack_Push(ehs,New_Book("알고리즘","이순신",9));
    EHStack_Push(ehs,New_Book("디자인패턴","정약용",13));

스택이 비어있지 않다면 반복해서 보관한 도서를 꺼내와 출력할게요. 스택은 LIFO 방식으로 자료를 꺼내주므로 “디자인 패턴”, “알고리즘”, “C++언어”, “C언어” 순으로 출력하면 정상적으로 동작하는 것입니다.

    while( ! EHStack_IsEmpty(ehs))
    {
        book = (Book *)EHStack_Pop(ehs);
        if(book)
        {
            Book_View(book);
            Delete_Book(book);
        }
    }
    Delete_EHStack(ehs);
    return 0;
}

이상으로 스택 구현을 마칠게요.

▷실행 결과

<0000000005>:<자료구조>
	 저자:김구
<0000000013>:<디자인패턴>
	 저자:정약용
<0000000009>:<알고리즘>
	 저자:이순신
<0000000020>:<C++언어>
	 저자:강감찬
<0000000010>:<C언어>
	 저자:홍길동

이번 장에서 구현한 선형 자료구조는 앞으로 뒤에서 나올 알고리즘을 설명하기 위해 사용할 수 있습니다. 그리고 비선형 자료구조에 관한 구현은 이미 3장에서 이진 탐색 트리를 구현하였고 나머지는 필요할 때마다 소개하고 설계 및 구현하여 이용하기로 할게요.

이 책은 알고리즘 중심으로 문제 해결 능력을 다루는 책입니다. 자료구조를 중심으로 집필한 책들과 다루는 소재가 비슷할 수 있지만 집필 순서나 설명의 초점이 다룰 수 있습니다.