Verem osztály alapvető funkcióinak elkészítése

Írjunk dinamikus verem osztályt, amelynek osztálydefiníciója az alábbi:
Stack.h állomány:

#ifndef STACK_H

#define STACK_H

 

const int NULL=0;

 

class Stack

{

      int elementNum;

      int *pData;

 

public:

      Stack() {elementNum=0;pData=NULL;}

      Stack(const Stack& theOther);

      ~Stack() {if(pData!=NULL) delete[]pData;}

     

      bool isEmpty()const{return !elementNum;}

      bool pop(int& element);

      bool push(int element);

 

};

#endif /*STACK_H */



A megoldásért kattints ide!

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;

}

 




2008.01.11. 14:18:01 |  Permalink  |  Hozzászólások száma: 0  |  Tárgyszavak: Dinamikus adattagok


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások