Niemand?
Ik heb de stack qua functionaliteit bijna afgewerkt. ook heb ik een workaround gevonden voor het "eerst twee geheugenadressen" probleem. Maar toch hoop ik dat iemand mij nog steeds naar de fout wijst; nu verspil ik gewoon onterecht 8 bytes.
Maar goed, hier is de nieuwe code:
#include <iostream>
#include <new>
using namespace std;
int * stack_create ( int size );
void stack_push ( int * stack, int stack_size, int val );
int stack_pop ( int * stack, int stack_size );
void stack_delete ( int * stack );
void print_stack ( int * stack, int stack_size );
int main ( )
{
int * pstack;
int val_popped;
pstack = stack_create ( 7 );
stack_push ( pstack, 7, 5 );
stack_push ( pstack, 7, 16 );
stack_push ( pstack, 7, 33 );
stack_push ( pstack, 7, 44 );
stack_push ( pstack, 7, 83 );
val_popped = stack_pop ( pstack, 7 );
print_stack ( pstack, 7 );
cout << "\n" << val_popped << endl;
stack_delete ( pstack );
cin.get ( );
return 0;
}
int n;
int * stack_create ( int size )
{
int * new_stack = new int [ size + 2 ]; return new_stack;
}
void stack_push ( int * stack, int stack_size, int val )
{
if ( stack [ stack_size + 2 ] != 0 )
cout << "Fout: de stack is vol." << endl;
for ( n = 2; n < ( stack_size + 2 ); n++ )
{
if ( stack [ n ] == 0 )
{
stack [ n ] = val;
break;
}
}
}
int stack_pop ( int * stack, int stack_size )
{
for ( n = stack_size + 2; n >= 0; n-- )
{
if ( stack [ n ] != 0 )
return stack [ n ];
else if ( stack == 0 )
return 0;
}
}
void stack_delete ( int * stack )
{
delete [ ] stack;
}
void print_stack ( int * stack, int stack_size )
{
int n;
for ( n = 2; n < ( stack_size + 2 ); n++ )
cout << stack [ n ] << endl;
}