stack in c implementieren

Neue Frage »

Auf diesen Beitrag antworten »
bobby_charles20 stack in c implementieren

Meine Frage:
Hallo Leute!
Ich soll einen positiven-Zahlen-Stack (in c) als verkettete Liste, wie sie in stack.h deklariert wurde, implementieren. Ich bin eigentlich kein Informatiker also mache ich nur die Einführung in c und brauche dringend Hilfe, da ich gar nicht weiß, wie ich dieses Programm schreiben soll. Wie schreibe ich die einzelnen Funktionen? Das ist die letzte Aufgebe die ich abgeben muss.

Folgender Teil vom Programm ist vorgegeben:

description: A positive-number int-stack implementation.

#include "stack.h"

//Opaque (transparent) data structure for the stack
//typedef struct _stack * stack;
struct _stack {
//TODO
};

/* Creates a new, empty stack and returns it.
* Please free the object by free_stack
*/
stack create_stack() {
//TODO
}

/* Pushes an element onto the stack s.
*/
void push(stack s, int element) {
//TODO
}

/* Gives back the top element of the stack s. Does not remove.
* Returns -1 if the stack is empty (!).
*/
int top(stack s) {
//TODO
}

/* Gives back the top element of the stack s and removes it.
* Returns -1 if the stack is empty (!).
*/
int pop(stack s) {
//TODO
}

/* Returns wether the stack s is empty.
*/
int empty(stack s) {
//TODO
}

/* Free the memory used by stack s. Afterwards s is undefined.
*/
void free_stack(stack s) {
//TODO
}

Danke für eure Hilfe!

Meine Ideen:
Ich weiß leider nicht, wie ich anfangen soll.
 
Auf diesen Beitrag antworten »
ed209

Fangen wir an mit der Datenstruktur:

Wie muß "struct _stack" aussehen, wenn du es als verkettete Liste implementieren sollst und der inhalt ein int ist?

Gruß,
ED
Auf diesen Beitrag antworten »
SuperAnd

struct _stack {
int zahl;
struct _stack *next;
};

So, ungefähr?
Auf diesen Beitrag antworten »
ed209

Ja, wobei du dir noch überlegen mußt welche seite deiner Liste "oben" ist, und welche Seite "unten" vom Stack ist. Beides geht, nur eines von beiden ist praktischer smile
Im Zweifel probier einfach eins von beiden aus.

Als nächstes mußt du die Funktionen mit Leben füllen, mal das einfachste:
code:
1:
2:
3:
4:
5:
6:
7:
/* Returns wether the stack s is empty.
*/
int empty(stack s) {
//TODO
}


Wie findest heraus ob dein Stack leer ist?

Gruß,
ED
 
Auf diesen Beitrag antworten »
SuperAnd

wenn es Null ist
Auf diesen Beitrag antworten »
ed209

Wie muß dann die Funktion aussehen?
Auf diesen Beitrag antworten »
SuperAnd

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
/* Returns wether the stack s is empty.
*/
int empty(stack s) {
if (s == NULL){
return 0;
}
return 1;
}
Auf diesen Beitrag antworten »
ed209

Ich denke das könnte funktionieren, aber denk daran das schön einzurücken das ist mit dem code-tag wunderbar möglich.
Jetzt versuch mal die anderen Funktionen auszufüllen.

Gruß,
ED
Auf diesen Beitrag antworten »
SuperAnd

Mein problem liegt bei
stack create_stack()

Ich habe keine Ahnung was ich da einfüllen sollte.
Auf diesen Beitrag antworten »
ed209

Füll doch erstmal aus, was Du weißt.
create_stack soll einen leeren Stack zurückgeben. Wie ein leerer Stack aussieht hast Du ja bereits geschrieben. Es ist einfacher als Du denkst smile
Auf diesen Beitrag antworten »
SuperAnd

ich habe echt keine ahnung...
Auf diesen Beitrag antworten »
ed209

Dann füll erstmal aus was du weißt.
Auf diesen Beitrag antworten »
SuperAnd

ich habe dir pers pn geschickt...
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »