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

Informatiker Board » Themengebiete » Theoretische Informatik » Stack Liste » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (2): « vorherige 1 [2] Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Stack Liste
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
lilli.
Grünschnabel


Dabei seit: 06.03.2014
Beiträge: 8

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 verstehe es leider nicht. Ich bin da echt noch in den Anfängen.
push hängt von frame_data_t und call_stack_t ab.

void push (frame_data_t *frame)
{


if (s == NULL)
return;

frame= new_frame();
frame->value = value;

if (s->top == NULL) {
s->top = frame;
s->size = 1;
return;
}

st->previous = s->top;
s->top = frame;
s->size++;
}
06.03.2014 17:12 lilli. ist offline Beiträge von lilli. suchen Nehmen Sie lilli. in Ihre Freundesliste auf
as_string as_string ist männlich
Haudegen


Dabei seit: 06.11.2013
Beiträge: 638
Herkunft: Heidelberg

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

Hallo,

ich hab das mal in ein kleines Programmchen geschrieben, zumindest wie ich meine, dass es sinnvoll ist.
Ich hab es nicht wirklich getestet, nur mal kompilieren lassen und dabei sicher gestellt, dass keine Syntaxfehler drin sind. Andere Fehler können natürlich noch gut drin sein...

Aber insgesamt: Es bringt wenig, wenn wir Dir einfach Musterlösungen geben. Man lernt das nur durch selber-machen. Klar ist das am Anfang schwer und so, aber anders geht's halt kaum...

Gruß
Marco

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
#include <stdlib.h>

typedef struct frame_data {
	int retval;
	int param[16];
	int pcount;
} frame_data_t;

typedef struct call_frame {
	frame_data_t *data;
	struct call_frame *previous;
} call_frame_t;

typedef struct call_stack {
	call_frame_t *top;
	int size;
} call_stack_t;

call_stack_t call_stack;

void initialize() {
	call_stack.size = 0;
	call_stack.top = NULL;
}

void push(frame_data_t *frame_data) {
	call_frame_t *call_frame = (call_frame_t *) malloc(sizeof(call_frame_t));
	call_frame->previous = call_stack.top; // previous soll auf den call_frame zeigen, der bisher top war
	call_stack.top = call_frame; // top soll jetzt auf den neuen zeigen
	call_stack.size++; // die Groesse des Stacks (sagt man Tiefe?) hat sich um eins erhoeht 

	call_frame->data = frame_data; // Verweis auf den neuen (uebergebenen) Datensatz
}
06.03.2014 23:43 as_string ist offline E-Mail an as_string senden Beiträge von as_string suchen Nehmen Sie as_string in Ihre Freundesliste auf
Seiten (2): « vorherige 1 [2] Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Stack Liste