加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 05:59:58 所属栏目:安全 来源:网络整理
导读:一个数组实现两个栈有很多想法,我先写一种比较简单的,思路如下图所示: 代码如下: #includeiostreamusing namespace std;//一个数组实现两个栈template class Tclass arraystack{public : arraystack() { _array1 = new T[10]; _array2 = _array1 + 9; _s

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


代码如下:

#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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读