root/labo1/labo1/intlijst.cpp

User picture

Author: machiel.sleeuwaert

Revision: 13 («Previous)


File Size: 1.72 KB

(October 08, 2008 15:33 UTC) Over 3 years ago


  

 
Show/hide line numbers
#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

}