본문 바로가기

Programming/DS SorceCode

StudentStack.h : 학생정보 스택 클래스

#pragma once

//StudentStack.h : 학생정보 스택 클래스

#ifndef ___StudentStack

#define ___StudentStack


#include "Student.h"

const int MAX_STACK_SIZE = 100; //스택의 최대 크기 설정

//오류 처리 함수

inline void error(const char *message) {

printf("%s\n", message);

exit(1);

}


class StudentStack {

int top; //요소의 개수

Student data[MAX_STACK_SIZE]; //요소의 배열

public:

StudentStack() { top = -1; } //스택 생성자

bool isEmpty() { return top == -1; }

bool isFull() { return top == MAX_STACK_SIZE; }

void push(Student e){ //맨 위에 항목 삽입 //만약 student객체가 너무 커서 복사의 부담이 있다면 다음과 같이 포인터 형이나 레퍼런스 형으로 선언할 수도 있음

if (isFull()) error("스택 포화 에러"); //void push(Student* pe); //포인터 형으로 처리한 매개변수

data[++top] = e; //void push(Student& e); //레퍼런스 형으로 처리한 매개변수

}

Student pop() { //맨 위의 요소를 삭제하고 반환

if (isEmpty()) error("스택 공백 에러");

return data[top--];

}

Student peek() { //삭제하지 않고 요소 반환

if (isEmpty()) error("스택 공백 에러");

return data[top];

}

void display() { //스택 내용을 화면에 출력

printf("[전체 학생의 수 = %2d\n", top + 1);

for (int i = 0; i <= top; i++)

data[i].display(); //각 학생 정보 출력

printf("\n");


}


};


#endif // !___StudentStack