006
21.10.2007, 18:57 Uhr
power
|
nee, das mit dem platz geht so!
Jetzt wird nur noch einmal ausgegeben, dass kein Platz mehr auf dem Stack ist. Ist ja auch richtig so!
Und die "+1" müssen auch bleiben, denn ich dekrementiere ja top erst um 1, damit er auf ein Element unter dem, was "gelöscht" werden soll zeigen soll. Und dann brauch eich ja wieder top+1 um das Element, was gelöscht werden soll, auszugeben!
Also von daher funktioniert alles so, wie es soll! Hier nochmal der Quellcode:
C++: |
#include <iostream> #include <stdlib.h> #include "stack.h" using namespace std;
Stack* createStack(unsigned int laenge) { Stack *p; p=(Stack*) malloc (sizeof(Stack)); p->content=(char*) malloc (laenge * sizeof(char)); p->top=0; p->depth=laenge-1; return p; }
void push(Stack *p, char x) { if(p->top>p->depth) cout << "Kein Platz mehr auf dem Stack" << endl; else { p->content[p->top]=x; p->top++; } }
char pop(Stack *p) { p->top--; return p->content[p->top+1]; }
int isEmpty(Stack *p) { if(p->top!=0) return 1; else return 0; }
void destroyStack(Stack *p) { free(p->content); free(p); }
|
Das einzige problem, was noch besteht, ist, dass die Buchstaben nicht ausgegeben werden sollen! Und ich nicht weiß, ob die Anweisung in der Main Funktion "cout << pop(s) << endl;" so richtig ist. Ich glaube, es liegt daran. |