【数据结构】一个数组实现两个栈
2015-10-31 16:51
363 查看
一个数组实现两个栈有很多想法,我先写一种比较简单的,思路如下图所示:
代码如下:
代码如下:
#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; }
相关文章推荐
- 【数据结构】实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 【数据结构】检查元素出栈的合法性
- 【数据结构】用栈实现迷宫
- UVa 1400 "Ray, Pass me the dishes!"(区间最大连续数组和)
- 数据结构之递归算法
- 04-树4 是否同一棵二叉搜索树
- Digits Count(线段树,区间更新)
- 数据结构-树-学习笔记
- 数据结构之栈定义及基本操作实现
- 中国大学MOOC-陈越、何钦铭-数据结构 Insertion or Heap Sort
- MySQL索引背后的数据结构及算法原理
- 风骚裙摆--最后的内存池
- nyoj 128前缀式计算 【数据结构&&队列】
- 关于VFS文件系统中的superblock、inode、d_entry和file数据结构
- 1500: [NOI2005]维修数列(Splay)
- 数据结构:逻辑结构和存储结构
- 2015年大二上-数据结构-链表(2)- 建设“单链表”算法库
- Java数据结构与算法之队列
- HDU 1166 敌兵布阵(区间求和+单点更新)
- 数据结构—栈