root/labo1/labo1/intlijst.cpp
Author: machiel.sleeuwaert
File Size: 1.72 KB
(October 08, 2008 15:33 UTC) Over 3 years ago
#include "intlijst.h"
IntLijst::IntLijst():m_CurrentSize(2),m_UsedSize(0),m_IntArrPTR(0)
{
m_IntArrPTR = new int[m_CurrentSize];
}
IntLijst::~IntLijst()
{
delete [] m_IntArrPTR;
}
void IntLijst::push_back(int value){
if(m_UsedSize >= m_CurrentSize){
makeArrayBigger();
}
m_IntArrPTR[m_UsedSize] = value;
++m_UsedSize;
}
int IntLijst::pop_back(){
if(m_UsedSize<0)
return 0;
--m_UsedSize;
if (m_UsedSize < (m_CurrentSize >> 1)){
m_CurrentSize>>= 1;
}
return m_IntArrPTR[m_UsedSize];
cout << "size is now ";
cout << m_CurrentSize;
cout << "\n";
}
int IntLijst::at(int positie){
if (positie < m_UsedSize){
return m_IntArrPTR[positie];
}
return 0;
}
void IntLijst::insert (int value, int positie){
if (positie > m_UsedSize){
return;
}
if(m_UsedSize >= m_CurrentSize){
makeArrayBigger();
}
int* temparr = new int[m_CurrentSize];
for(int i=0;i<m_CurrentSize;++i){
if (i==positie){
temparr[i]=value;
temparr[i+1] = m_IntArrPTR[i];
}else if (i>positie){
temparr[i+1] = m_IntArrPTR[i];
}else{
temparr[i] = m_IntArrPTR[i];
}
}
delete [] m_IntArrPTR;
m_IntArrPTR=temparr;
m_UsedSize++;
}
void IntLijst::change(int positie, int newvalue){
if (positie < m_UsedSize){
m_IntArrPTR[positie] = newvalue;
}
}
void IntLijst::makeArrayBigger(){
int oldsize = m_CurrentSize; //save old size
m_CurrentSize*=2; //double the size
int *tempArr = new int[m_CurrentSize]; //make temp array of old size
for(int i =0;i<oldsize;++i){
tempArr[i] = m_IntArrPTR[i]; //copy old array into bigger temp array
}
delete[] m_IntArrPTR; //delete old array
m_IntArrPTR = tempArr; //assign array to pointer
}
|