Ich versuche, meinen Stapel basierend auf der Anzahl der Buchstaben, die ein Benutzer eingibt, dynamisch zuzuweisen.Stapelgröße von Benutzer
Mein aktuelles Programm bekommt eine Reihe von Buchstaben oder Zahlen und gibt sie dann in FILO-Reihenfolge aus (also umgekehrte Reihenfolge).
Zum Beispiel, wenn ein Benutzer 123 eingibt, setzt er die Größe des Stapels 3 und kehrt 321.
Das ist mein Header (Klasse)
class CharStack {
enum {size = 100}; //size of stack. big enough to receive long letters.
int top; //top pointer
char buf[size]; //stack's size
public:
CharStack() //constructor
{top = size;}
bool chkEmpty() const //true if no data in stack
{return top == size;}
bool chkFull() const //true if stack is full
{return !top;}
bool push(char ch); //pop data from stack
char pop();
};
und das ist mein Haupt.
int main() {
CharStack chStack; //A stack with 100
char str[100];
int *size;
cout << "input letter or numbers:";
cin >> str;
size = new int[strlen(str)+1]; //count number of letters.
und so weiter ...
denke ich, alles was ich brauche von hier zu tun ist, size (in main) = buf[size]
(in der Header-Datei) zu setzen. Ich glaube, es gibt einen sehr einfachen Weg, dies zu lösen, aber ich sehe es einfach nicht.
FIFO bedeutet, dass Elemente in derselben Reihenfolge ausgegeben werden, in der sie eingegeben wurden, nicht umgekehrt. In jedem Fall, um Ihre Frage zu beantworten, ist "Größe" ein 'privates' Mitglied von' CharStack', daher ist 'main()' in Ihrem Code nicht zugänglich. Wenn Sie auf den Wert von etwas zugreifen müssen, das privat ist, deklarieren Sie eine "public" -Memberfunktion der Klasse, die sie zurückgibt. – Peter
FIFO: zuerst in first out, taht nicht zurück. –
Sie kennen std :: stack? –