Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » stack in c implementieren » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen stack in c implementieren
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
bobby_charles20
Grünschnabel


Dabei seit: 09.12.2010
Beiträge: 1

stack in c implementieren Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
09.12.2010 12:49 bobby_charles20 ist offline Beiträge von bobby_charles20 suchen Nehmen Sie bobby_charles20 in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
10.12.2010 22:44 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
SuperAnd
Grünschnabel


Dabei seit: 10.12.2010
Beiträge: 6

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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

So, ungefähr?
10.12.2010 23:51 SuperAnd ist offline Beiträge von SuperAnd suchen Nehmen Sie SuperAnd in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
11.12.2010 10:48 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
SuperAnd
Grünschnabel


Dabei seit: 10.12.2010
Beiträge: 6

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

wenn es Null ist
11.12.2010 11:57 SuperAnd ist offline Beiträge von SuperAnd suchen Nehmen Sie SuperAnd in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wie muß dann die Funktion aussehen?
11.12.2010 12:20 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
SuperAnd
Grünschnabel


Dabei seit: 10.12.2010
Beiträge: 6

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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;
}
11.12.2010 12:28 SuperAnd ist offline Beiträge von SuperAnd suchen Nehmen Sie SuperAnd in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
11.12.2010 13:01 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
SuperAnd
Grünschnabel


Dabei seit: 10.12.2010
Beiträge: 6

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Mein problem liegt bei
stack create_stack()

Ich habe keine Ahnung was ich da einfüllen sollte.
11.12.2010 13:20 SuperAnd ist offline Beiträge von SuperAnd suchen Nehmen Sie SuperAnd in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
11.12.2010 14:19 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
SuperAnd
Grünschnabel


Dabei seit: 10.12.2010
Beiträge: 6

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

ich habe echt keine ahnung...
11.12.2010 18:34 SuperAnd ist offline Beiträge von SuperAnd suchen Nehmen Sie SuperAnd in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Dann füll erstmal aus was du weißt.
12.12.2010 00:53 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
SuperAnd
Grünschnabel


Dabei seit: 10.12.2010
Beiträge: 6

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

ich habe dir pers pn geschickt...
12.12.2010 04:15 SuperAnd ist offline Beiträge von SuperAnd suchen Nehmen Sie SuperAnd in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » stack in c implementieren