Stack dynamisch C++

Gast #2706847
Lesenswert?

Hallo zusamen, ich bin neu in C++ und habe noch ein paar 
Verständnisfragen. Als kleine Aufgabe soll ein Stack dynamisch für 
Zahlen erstellt werden. Hier mein Ansatz:
1
stack.h: 
2

3

4
class cStack{ 
5

6
friend int main(void); 
7
friend void showStack(cStack *Start); 
8

9
private: 
10

11
int top; 
12
double number; 
13
class cStack *next; 
14
class cStack *Start; 
15

16
public: 
17

18
cStack(void); //Konstruktor 
19
bool push(double number); 
20
double pop(void); 
21
int count(void); 
22
void drop(void); 
23
void swap(void); 
24

25
double get(int i); 
26

27
}; 
28

29
stack.cpp: 
30

31
#include"stack.h" 
32
#include<iostream> 
33
#include<stdio.h> 
34

35
#define TRUE 1 
36
#define FALSE 0 
37

38
cStack::cStack(void) 
39
{ 
40
number=0; 
41

42
Start=NULL; 
43
} 
44

45
bool cStack::push(double number) 
46
{ 
47

48
int Fehler=0; 
49

50
if(!Fehler) 
51
{ 
52
//next = new cStack; 
53
Start = (cStack*)malloc(sizeof(cStack)); 
54

55
if(Start==NULL) Fehler= -1; 
56
} 
57

58
if(!Fehler) (Start)->number= number; 
59

60
Start = Start->next; 
61

62
return true; 
63

64
} 
65

66
double cStack::pop(void) 
67
{ 
68

69
return 0; 
70

71
} 
72

73
int cStack::count(void) 
74
{ 
75

76
return 1; 
77
} 
78

79
void cStack::drop(void) 
80
{ 
81

82
} 
83

84
void cStack::swap(void) 
85
{ 
86

87
} 
88

89
double cStack::get(int i) 
90
{ 
91

92
return 0; 
93

94
} 
95

96
Rechner.cpp: 
97

98
#include<iostream> 
99
#include"stack.h" 
100
using namespace std; 
101

102
void showStack(cStack *Start); 
103

104
int main(void) 
105
{ 
106
int rueckgabe; 
107

108
cStack Stack; 
109

110
rueckgabe = Stack.push(18); 
111

112
Stack.push(9); 
113

114
//showStack(Stack.Start); 
115

116
cout << "Rueckgabe: " << rueckgabe <<endl; 
117

118
//cout << "Stack: " << Stack.Start->number <<endl; 
119
//hier habe ich versucht die erste Zahl auszugeben. 
120

121
system("PAUSE"); 
122

123
return 0; 
124

125

126
} 
127
//Diese Funktion soll für die Ausgabe dienen, aber ich bekomme immer eine Fehlermeldung und rufe sie in main nicht auf ;) 
128
void showStack (cStack *Start) 
129
{ 
130
while(Start){ 
131

132
cout << "Stack: " << Start->number << endl; 
133
Start = Start->next; 
134
} 
135

136
}
Ich habe Probleme den Stack auszugeben. Das Programm steht noch in den 
Grundzügen, somit sind noch nicht alle Methoden implementiert und das 
Error-Handling ist auch noch nicht fertig. Ich wäre sehr dankbar für 
eine Antwort :)
#2707489
Lesenswert?

> Das Programm steht noch in den Grundzügen, somit sind noch nicht
> alle Methoden implementiert und das Error-Handling ist auch noch
> nicht fertig.

Wenns nur das wäre.
Die ganze Stack Klasse ist Unsinn.

Du musst unterscheiden zwischen dem Container (in deinem Fall 'der 
Stack') und den Werten, die du in diesem Container speicherst. Im Moment 
mischt du das fröhlich durcheinander.

Dein Listenhandling ist fehlerhaft.

malloc hat in einem C++ Programm (ausser wenn es um eine Schnittstelle 
zu C-Code geht) definitiv nichts verloren.

Um das Schlüsselwort 'friend' solltest du bei deinem Erfahrungsstand 
einen GROSSEN Bogen machen.

Und deine Formatierung ist tatsächlich grausam.
#2707503
Lesenswert?

Läubi .. schrieb:
> Karl Heinz Buchegger schrieb:
>> Die ganze Stack Klasse ist Unsinn.
>
> Und gibt es schon fertig und erprobt ;-)

:-)
Ich akzeptiere, dass es sich hier um eine Programmierübung handelt. 
Etwas das ich normalerweise immer unterstütze. Ich finde, dass jeder 
Informatiker mit dynamischen Datenstrukturen umgehen können muss. Du 
kannst mich dafür gerne 'altmodisch' nennen, aber ich finde so etwas 
trainiert das logisch methodische Denken. :-)
Für einen realen Einsatz nimmt man dann selbstverständlich die fertigen 
Klassen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren