004
03.05.2005, 12:19 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
ok so gehts nun:
C++: |
#include <iostream>
using namespace std;
struct stack_elem { char elem; stack_elem *prev; };
char top(stack_elem **S) { return (*S)->elem; }
void pop(stack_elem **S) { stack_elem *ptemp = *S; *S = ptemp->prev; delete ptemp; }
void push(stack_elem **S, char x) { stack_elem *pstack_elem = new stack_elem; pstack_elem->elem = x; pstack_elem->prev = NULL; if (*S == NULL) { cout << "null" << endl; *S = pstack_elem; (*S)->prev = NULL; } else { cout << "not null" << endl; pstack_elem->prev = *S; *S = pstack_elem; } cout << top(S) << " " << pstack_elem << " " << *S << " " << (*S)->prev << endl; }
void setS(stack_elem **S) { *S = NULL; }
int main() { stack_elem *S; setS(&S); char input[10]; cout << "Geben sie einen String zeichenweise ein: "; cin >> input; while (input[0] != '0') { push(&S,input[0]); cout << S << endl; cout << "Geben Sie das nchste Zeichen ein: "; cin >> input; } while (S != NULL) { cout << top(&S); pop(&S); } }
|
Das Problem ist das gewesen, das er einen nullpointer nicht zurückbekommt, wodurchs immer null blieb. Außerdem hat er das erste glied verschluckt, wegen dieser doppelt gemoppelten S->prev != NULL Abfrage in der untersten Schleife. -- class God : public ChuckNorris { }; |