ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 동적메모리를 사용한 stack
    c++ 2019. 12. 28. 14:11
    #include<iostream>
    #include<stdlib.h>//malloc함수를 사용하기위한 라이브러리 호출
    using namespace std;
    
    class stack {
    	char *stck;
    	int tos;
    	int size;
    public:
    	stack(int s);
    	~stack();
    	void push(char ch);
    	char pop();
    
    };
    stack::stack(int s)
    {
    	cout << "constructing a stack\n";
    	tos = 0;
    	stck = (char *)malloc(s);//s만큼 동적 메모리를 할당하겠다.
    	if (!stck) {//스택이 없다면
    		cout << "error";
    		return;
    	}
    	size = s;
    }
    stack::~stack()
    {
    	free(stck);//free 함수로 메모리 사용해제
    }
    void stack::push(char ch)
    {
    	if (tos == size)
    	{
    		cout << "stack is full";
    	}
    	else
    		stck[tos] = ch;
    		tos++;
    }
    char stack::pop()
    {
    	if (tos == 0)
    	{
    		cout << "stack is empty";
    	}
    	else
    		tos--;
    	return stck[tos];
    
    }
    int main(void)
    {
    	stack s1(10);
    	int i;
    
    	s1.push('a');
    	s1.push('b');
    	s1.push('c');
    	for (i = 0; i < 3; i++)
    	{
    		cout << s1.pop() << endl;
    	}
    }

    'c++' 카테고리의 다른 글

    상속 연습문제  (0) 2019.12.28
    매개변수 갖는 생성자 연습문제  (0) 2019.12.28
    생성자  (0) 2019.12.24
    중복 멤버 함수  (0) 2019.12.24
    c++ 데이터와 출력  (0) 2019.12.23
Designed by Tistory.