// main.cpp
// CPPSTACK
//
// Created by wpfang on 2021/3/15.
//
#include <iostream>
#include <string>
using namespace std;
template<class T>
class CSTACK
{
private:
T A[5];
int Index;
public:
CSTACK()
{
Index=0;
}
bool isEmpty()
{
/*
if(0==Index) return true;
else return false;
*/
//return Index==0;
return !Index;
}
bool isFull()
{
return Index>=5;
}
bool push(T data)
{
if(isFull()) return false;
/*
A[Index]=data;
Index = Index+1;
*/
A[Index++]=data;
return true;
}
bool pop(T* data)
{
if(isEmpty()) return false;
/*
Index--;
*data=A[Index];
*/
*data=A[--Index];
return true;
}
void show()
{
int i;
for(i=0;i<Index;i++)
cout<<A[i]<<" ";
cout<<endl;
}
};
int main(int argc, const char * argv[]) {
CSTACK<int> s1,s2;
int d;
s1.push(1);s1.show();
s1.push(2);s1.show();
s2.push(100);s2.show();
s1.push(3);s1.show();
s1.pop(&d);s1.show();
s2.push(200);s2.show();
s1.push(4);s1.show();
string temp;
CSTACK<string> s3;
s3.push("apple"); s3.show();
s3.push("pineapple");s3.show();
s3.push("water melon");s3.show();
return 0;
}
Ci8vICBtYWluLmNwcAovLyAgQ1BQU1RBQ0sKLy8KLy8gIENyZWF0ZWQgYnkgd3BmYW5nIG9uIDIwMjEvMy8xNS4KLy8KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBDU1RBQ0sKewpwcml2YXRlOgogICAgVCBBWzVdOwogICAgaW50IEluZGV4OwpwdWJsaWM6CiAgICBDU1RBQ0soKQogICAgewogICAgICAgIEluZGV4PTA7CiAgICB9CiAgICBib29sIGlzRW1wdHkoKQogICAgewogICAgICAgIC8qCiAgICAgICAgIGlmKDA9PUluZGV4KSByZXR1cm4gdHJ1ZTsKICAgICAgICAgZWxzZSByZXR1cm4gZmFsc2U7CiAgICAgICAgICovCiAgICAgICAgLy9yZXR1cm4gSW5kZXg9PTA7CiAgICAgICAgcmV0dXJuICFJbmRleDsKICAgIH0KICAgIGJvb2wgaXNGdWxsKCkKICAgIHsKICAgICAgICByZXR1cm4gSW5kZXg+PTU7CiAgICB9CiAgICBib29sIHB1c2goVCBkYXRhKQogICAgewogICAgICAgIGlmKGlzRnVsbCgpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgLyoKICAgICAgICAgQVtJbmRleF09ZGF0YTsKICAgICAgICAgSW5kZXggPSBJbmRleCsxOwogICAgICAgICAqLwogICAgICAgIEFbSW5kZXgrK109ZGF0YTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGJvb2wgcG9wKFQqIGRhdGEpCiAgICB7CiAgICAgICAgaWYoaXNFbXB0eSgpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgLyoKICAgICAgICAgSW5kZXgtLTsKICAgICAgICAgKmRhdGE9QVtJbmRleF07CiAgICAgICAgICovCiAgICAgICAgKmRhdGE9QVstLUluZGV4XTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHZvaWQgc2hvdygpCiAgICB7CiAgICAgICAgaW50IGk7CiAgICAgICAgZm9yKGk9MDtpPEluZGV4O2krKykKICAgICAgICBjb3V0PDxBW2ldPDwiICI7CiAgICAgICAgY291dDw8ZW5kbDsKICAgIH0KfTsKaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBhcmd2W10pIHsKICAgIENTVEFDSzxpbnQ+IHMxLHMyOwogICAgaW50IGQ7CiAgICBzMS5wdXNoKDEpO3MxLnNob3coKTsKICAgIHMxLnB1c2goMik7czEuc2hvdygpOwogICAgczIucHVzaCgxMDApO3MyLnNob3coKTsKICAgIHMxLnB1c2goMyk7czEuc2hvdygpOwogICAgczEucG9wKCZkKTtzMS5zaG93KCk7CiAgICBzMi5wdXNoKDIwMCk7czIuc2hvdygpOwogICAgczEucHVzaCg0KTtzMS5zaG93KCk7CiAgICBzdHJpbmcgdGVtcDsKICAgIENTVEFDSzxzdHJpbmc+IHMzOwogICAgczMucHVzaCgiYXBwbGUiKTsgczMuc2hvdygpOwogICAgczMucHVzaCgicGluZWFwcGxlIik7czMuc2hvdygpOwogICAgczMucHVzaCgid2F0ZXIgbWVsb24iKTtzMy5zaG93KCk7CiAgICByZXR1cm4gMDsKfQ==