A feladat az alapelemek gyakorlásáról szól, nincs benne
- = operátor
- kivételkezelés
- C++ I/O.
A példatár következő feladatait több szinten is meg lehet oldani. Az alábbi megoldás a kezdő szintet mutatja be.
#include <limits.h>
#include "Stack.h"
Stack::Stack(const Stack& theOther)
{
if(theOther.elementNum==0)
{
elementNum=0;
pData=NULL;
}
else
{
elementNum=theOther.elementNum;
pData=new int[elementNum];
for(int i=0;i<elementNum;i++)
{
pData[i]=theOther.pData[i];
}
}
}
bool Stack::pop(int& element)
{
if(elementNum==0)return false;
if(elementNum==1)
{
element=pData[0];
delete []pData;
pData=NULL;
elementNum=0;
return true;
}
elementNum--;
element=pData[elementNum];
int* pTemp=new int[elementNum];
for(int i=0;i<elementNum;i++)
{
pTemp[i]=pData[i];
}
delete[] pData;
pData=pTemp;
return true;
}
bool Stack::push(int element)
{
if(elementNum==INT_MAX)
{
return false;
}
int* pTemp=new int[elementNum+1];
for(int i=0; i<elementNum;i++)
{
pTemp[i]=pData[i];
}
pTemp[elementNum]=element;
if(pData)delete[]pData;
pData=pTemp;
elementNum++;
return true;
}