첫번째 프로젝트 - Stack Calculator 04
Here is Stack. very simple one.
이번에는 stack 입니다. 매우 단순합니다. templet 를 쓰는 경우가 많은데, 그냥 쉽게 만들었습니다. 물론, 연산자의 프라이어리티도 무시 입니다. -_-;;
스택은 두 가지 입니다. 잘 보시기를..
///////////////////////////////////////////////////////////////////////////////
// File Name : stack.h //
// Date : 2004 / 10 / 8 //
// Compiler : g++ //
// OS : Red Hat Linux 7.1 //
//----------------------------------------------------------------//
// Etc : Data Strucure Assignment #1 //
// Stack Calculator //
// ver : 1.0 //
// Description //
// class Stack의 선언부. 스트링용과 char 용의 두가지 구현
///////////////////////////////////////////////////////////////////////////////
#ifndef __iostream_H__ //기본 입출력
#define __iostream_H__
#include <iostream.h>
#endif
#ifndef __FSTREAM_H__ //파일 입출력
#define __FSTREAM_H__
#include <fstream.h>
#endif
#ifndef __STRING_H__ //문자열
#define __STRING_H__
#include <string.h>
#endif
class Stack_c //char 를 위한 stack
{
public:
Stack_c(); // constructor
~Stack_c(); // destructor
int isEmpty(); //스택이 비었는지 확인
int isFull(); //스택이 가득 찾는지 확인
char pop(); //스택에서 data 출력(pop)
int push(char); //스택에 data 입력(push)
private:
char data[80]; // string buffer - 저장공간
int top; // 마지막 저장 위치
};
class Stack_s //string을 위한 stack
{
public:
Stack_s(); // constructor
~Stack_s(); // destructor
int isEmpty();
int isFull();
char* pop();
int push(char*);
private:
char data[80][6]; // string buffer - 저장공간
int top; // 마지막 저장 위치
};
///////////////////////////////////////////////////////////////////////////////
// File Name : stack.cpp //
// Date : 2004 / 10 / 8 //
// Compiler : g++ //
// OS : Red Hat Linux 7.1 //
//----------------------------------------------------------------//
// Etc : Data Strucure Assignment #1 //
// Stack Calculator //
// ver : 1.0 //
// Description //
// class Stack의 구현부. 스트링용과 char 용의 두가지 구현 //
///////////////////////////////////////////////////////////////////////////////
#ifndef __STACK_H__
#define __STACK_H__
#include "stack.h"
#endif
Stack_c::Stack_c() //생성자
{
top = -1; //스택이 비어있음
}
Stack_c::~Stack_c() //소멸자
{}
// Stack_c::isEmpty()
// Input : void
// Output : 스택이 비어 있으면 -1, 비어있지 않으면 0보다 큰 수를 리턴
// Purpose : 스택이 비어있는지 확인함
int Stack_c::isEmpty()
{
return top;
}
// Stack_c::isFull()
// Input : void
// Output : 스택이 가득 차 있으면 -1, 그렇지 않으면 1
// Purpose : 스택이에 빈공간이 있는지 확인
int Stack_c::isFull()
{
if (top ==80)
{ return -1;}
else
{ return 1;}
}
// Stack_c::popl()
// Input : void
// Output : 가장 위에 쌓여 있는 char를 리턴, 스택이 비어있으면 -1을 리턴
// Purpose : 스택에서 데이터를 가져옮
char Stack_c::pop()
{
char temp;
if ( (isEmpty() ) >= 0)
{
temp = data[top];
top--;
return temp;
}
else
{
cout << "The Stack is Empty\n";
return -1;
}
}
// Stack_c::pushl()
// Input : char
// Output : 스택이 가득 차 있지 않으면 데이터를 입력하고 0보다 큰 값을 리턴, 스택이 가득 차 있으면 -1을 리턴
// Purpose : 스택에서 데이터를 입력
int Stack_c::push(char temp)
{
if ( (isFull()) >= 0)
{
top++;
data[top] = temp;
return top;
}
else
{
cout << "The Stack is FULL\n";
return -1;
}
}
Stack_s::Stack_s()
{
top = -1;
}
Stack_s::~Stack_s()
{}
// Stack_s::isEmpty()
// Input : void
// Output : 스택이 비어 있으면 -1, 비어있지 않으면 0보다 큰 수를 리턴
// Purpose : 스택이 비어있는지 확인함
int Stack_s::isEmpty()
{
return top;
}
// Stack_s::isFull()
// Input : void
// Output : 스택이 가득 차 있으면 -1, 그렇지 않으면 1
// Purpose : 스택이에 빈공간이 있는지 확인
int Stack_s::isFull()
{
if (top ==80)
{ return -1;}
else
{ return top+1;}
}
// Stack_s::popl()
// Input : void
// Output : 가장 위에 쌓여 있는 문자열을 리턴, 스택이 비어있으면 "error"을 리턴
// Purpose : 스택에서 데이터를 가져옮
char* Stack_s::pop()
{
char *temp;
if ( (isEmpty() ) >= 0)
{
temp = data[top];
top--;
return temp;
}
else
{
cout << "The Stack is Empty\n";
return "error";
}
}
// Stack_s::pushl()
// Input : char*
// Output : 스택이 가득 차 있지 않으면 데이터를 입력하고 0보다 큰 값을 리턴, 스택이 가득 차 있으면 -1을 리턴
// Purpose : 스택에서 데이터를 입력
int Stack_s::push(char *temp)
{
if ( (isFull()) >= 0)
{
top++;
strcpy(data[top], temp);
return top;
}
else
{
cout << "The Stack is FULL\n";
return -1;
}
}
'Exercise & Quizz > C++' 카테고리의 다른 글
C++ 코딩 - 이자 계산 - 이자가 0으로 나와요 (0) | 2015.08.30 |
---|---|
Stack calculator #5 - Infix - Postfix translation using Stask structure (0) | 2008.08.21 |
Stack calculator #3 - Infix - Postfix translation using Stask structure (0) | 2008.08.21 |
Stack calculator #2 - Infix - Postfix translation using Stask structure (0) | 2008.08.21 |
Stack calculator #1 - Infix - Postfix translation using Stask structure (0) | 2008.08.21 |