2014年8月25日 星期一

複習stack

#include <iostream>
using namespace std;
class my_stack
{
    private:
        int *number;
        int pos;
        int size;
    public:
        my_stack()                                          //default
        {
            number=new int[100];
            pos=-1;
            size=100;
        }
        my_stack(int len)                                   //assign size
        {
            number=new int[len];
            pos=-1;
            size=len;
        }
        void pop()                                          //pop
        {
            cout<<"pop "<<number[pos]<<endl;
            pos--;
            if(pos==-2)
            {
                cout<<"====================="<<endl;
                cout<<"index can't be slower than 0,try again"<<endl;
                cout<<"====================="<<endl;
                pos++;
            }

        }
        void push(int num)                                  //push
        {
            pos++;
            if(pos+1>size)
            {
                cout<<"====================="<<endl;
                cout<<"error buffer is filled,try again"<<endl;
                cout<<"====================="<<endl;
                pos--;
            }
            else
                number[pos]=num;
        }
        void show()                                         //show
        {
            if(pos==-1)
            {
                cout<<"====================="<<endl;
                cout<<"there is no content"<<endl;
                cout<<"====================="<<endl;
            }
            else
            {
                cout<<"====================="<<endl;
                cout<<"index low to high"<<endl;
                cout<<"stack contents"<<endl;
                cout<<"====================="<<endl;
                for(int i=pos;i>=0;i--)
                    cout<<"|"<<"__"<<number[i]<<"__"<<"|"<<endl;
            }
        }
        ~my_stack(){}                                       //delete
};
int main()
{
    int number;
    int opt;
    int size;
    cout<<"input stack size : ";
    cin>>size;
    my_stack source(size);

    cout<<"1 --- push "<<endl
        <<"2 --- pop  "<<endl
        <<"3 --- show "<<endl;

    while(true)
    {
      cout<<"command number : " ;
      cin>>opt;
      switch(opt)
      {
          cin>>opt;
          case 1:
              cout<<"enter a number : ";
              cin>>number;
              source.push(number);
              break;
          case 2:
              source.pop();
              break;
          case 3:
              source.show();
            break;

          default:
            cout<<"input error , try again"<<endl;
            break;
      }
    }
    return 0;
}