
Untitled
By: a guest on
May 2nd, 2012 | syntax:
C | size: 2.30 KB | hits: 20 | expires: Never
#include "aktienlist.h"
struct struct_stock
{
Aktie *root, *head;
/*
* legt ein element auf den stapel
*/
void push(Aktie *stock)
{
if(root == NULL)
root = stock;
else
head -> next = stock;
if(getNumberOfElements() > MAX_SIZE)
stockRemove(root);
head = stock;
}
/*
* nimmt einen wert vom stapel und gibt den speicher frei
* eine kopie der aktie wird zurueckgegeben
*/
Aktie pop()
{
Aktie result = *head;
stockRemove(head);
return result;
}
/*
* entfernt eine aktie vom stapel
*/
void stockRemove(Aktie *stock)
{
if(stock == root)
root = (root -> next != NULL) ? root -> next : NULL;
else if(stock == head)
head = stockGetPrevious(head);
else
stockGetPrevious(stock) -> next = stock -> next;
delete(stock);
}
/*
* gibt das element vor der uebergebenen aktie zurueck
*/
Aktie *stockGetPrevious(Aktie *stock)
{
Aktie *stockpointer = root;
if(stock == root)
return NULL;
while(stockpointer -> next != stock)
stockpointer = stockpointer -> next;
return stockpointer;
}
/*
* gibt die anzahl der elemente im stack zurueck
*/
int getNumberOfElements()
{
Aktie *stockpointer = root;
int i = 0;
while(stockpointer != NULL)
{
stockpointer = stockpointer -> next;
i++;
}
return i;
}
/*
* TRUE: Stack ist leer
* FALSE: Stack ist voll
*/
bool isEmpty()
{
return (getNumberOfElements() == 0);
}
/*
* TRUE: Stack ist voll
* FALSE: Stack ist nicht voll
*/
bool isFull()
{
return (getNumberOfElements() == MAX_SIZE);
}
/*
* zeige alle aktien an
*/
void printAll()
{
aktie *currentpointer = root;
int i = 1;
while(currentpointer != NULL)
{
cout << i << ". Name: " << currentpointer -> name << ", Kurs: " << currentpointer -> kurs << endl;
i++;
}
}
} Stack;