Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<string>
- class CustomStack {
- public:
- CustomStack()
- {
- count = 0;
- _size = 3;
- mData = new int[_size];
- }
- ~CustomStack()
- {
- delete [] mData;
- }
- void push(int val)
- {
- if (count == _size)
- {
- // _size += 5;
- extend(5);
- }
- mData[count] = val;
- ++count;
- std::cout << "ok" << std::endl;
- }
- void pop()
- {
- --count;
- std::cout << mData[count] << std::endl;
- }
- // void push(int val)
- // {
- // if (count == 0)
- // {
- // mData = new int[1];
- // mData[0] = val;
- // ++count;
- // std::cout << "ok" << std::endl;
- // return;
- // }
- // ++count;
- // int *cpyData = new int[count];
- // int i = 0;
- // for (i; i < count - 1; i++)
- // cpyData[i] = mData[i];
- // delete [] mData;
- // mData = cpyData;
- // mData[i] = val;
- // std::cout << "ok" << std::endl;
- // }
- // void pop()
- // {
- // // --count;
- // if (count == 1)
- // {
- // int ret = mData[0];
- // delete [] mData;
- // std::cout << ret << std::endl;
- // return;
- // }
- // int *cpy = new int[count - 1];
- // int ret = mData[count - 1];
- // int i = 0;
- // for (i; i < count - 1; i++)
- // cpy[i] = mData[i];
- // delete [] mData;
- // mData = cpy;
- // --count;
- // std::cout << ret << std::endl;
- // }
- int top() const { return mData[count - 1]; }
- size_t size() const { return count; }
- bool empty() const { return (count > 0 ? false : true) ;}
- void extend(int n)
- {
- _size += n;
- int *cpy = new int[_size];
- for (int i = 0; i < count; i++)
- cpy[i] = mData[i];
- delete [] mData;
- mData = cpy;
- }
- private:
- int count;
- size_t _size;
- protected:
- int* mData;
- };
- int main() {
- CustomStack st;
- std::string a;
- int d;
- // bool flag = 1;
- while (1)
- {
- // scanf("%s", a);
- std::cin >> a;
- if (a == "cmd_push")
- {
- // scanf("%d", &d);
- std::cin >> d;
- st.push(d);
- }
- else if (a == "cmd_pop")
- {
- if (st.empty()){
- printf("error");
- return 0;
- }
- st.pop();
- }
- else if (a == "cmd_top")
- {
- if (st.empty()){
- printf("error");
- return 0;
- }
- printf("%d\n", st.top());
- }
- else if (a == "cmd_size")
- {
- printf("%ld\n", st.size());
- }
- else if (a == "cmd_exit")
- {
- printf("bye\n");
- return 0;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement