微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【数据结构】一个数组实现两个栈

一个数组实现两个栈有很多想法,我先写一种比较简单的,思路如下图所示:


代码如下:

#include<iostream>
using namespace std;

//一个数组实现两个栈

template <class T>
class arraystack
{
public :
    arraystack()
    {
         _array1 = new T[10];
         _array2 = _array1 + 9;
         _size1 = 0;
         _size2 = 0;
         _capacity = 10;
    }
    
     void pusharray1(const T& x)
    {
          //判断数组是否已满
          if( (_size1+_size2) < _capacity )
         {
             _array1[_size1] = x;
             _size1++;
         }
          else
             cout<< "该栈已满"<<endl;
    }

     void pusharray2(const T& x)
    {
          if( (_size1+_size2) < _capacity )
         {
             _array1[_capacity - _size2 - 1] = x;
             _size2++;
         }
          else
             cout<< "该栈已满"<<endl;
    }

    T& GetTop1()
    {
          return _array1[_size1 - 1];
    }

    T& GetTop2()
    {
          return _array1[_capacity - _size2];
    }

     void poparray1()
    {
          //空
          //
          if(_size1 > 0)
         {
             _size1--;
         }
          else
             cout<< "该栈为空"<<endl;
    }

     void poparray2()
    {
          if(_size2 > 0)
         {
             _size2--;
         }
          else
             cout<< "该栈为空"<<endl;
    }

private :
    T* _array1;
    T* _array2;
     int _size1;
     int _size2;
     int _capacity;
};

void Test1()
{
    arraystack< int> a1;
    a1.pusharray1 (1);
    a1.pusharray1 (2);
    a1.pusharray1 (3);
    a1.pusharray1 (4);
    a1.pusharray1 (5);
    cout<<a1.GetTop1 ()<<endl;
    a1.poparray1 ();
    cout<<a1.GetTop1 ()<<endl;

    a1.pusharray2 (10);
    a1.pusharray2 (9);
    a1.pusharray2 (8);
    a1.pusharray2 (7);
    a1.pusharray2 (6);
    cout<<a1.GetTop2 ()<<endl;
    a1.poparray2 ();
    cout<<a1.GetTop2 ()<<endl;
}

int main()
{
    Test1();
     return 0;
}

原文地址:https://www.jb51.cc/datastructure/382587.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐