Schrift
[thread]3672[/thread]

Stack?



<< >> 2 Einträge, 1 Seite
Gast Gast
 2006-04-03 11:45
#34195 #34195
hallo erstmal!
Also ich hab da mal eine Frage zu Stacks! Bin noch nicht so erfahren mit Perl und würde mich freuen, wenn mir jemand weiterhelfen könnte! Un zwar soll ich so eine Art Tokenanalyse durchführen!

Ich habe dann z.B. folgenden Ausdruck in meinem Array stehen:
(Tab1(TabA,TabB)Tab2,Tab3);
Hierbei geht es aber darum, dass ich dann möchte, dass er Tab1 und TabA kombiniert, dann TabA mit TabB, dann aber Tab1 mit Tab2 und Tab2 mit Tab3, also jeweils mit Foreign Key.Bei diesen Tabs handelt es sich dann um Tabellennamen in einer Datenbank. Kann man das dann mit einem Stack realisieren, dass dieser dann immer überprüft, ob die Kombination der Tabellen funktioniert?

Ich weiß nicht ob das so klar ist was ich will!
Ich hoffe es kann mir wer helfen!

Danke schonmal im vorraus!
Sandy
esskar
 2006-04-03 13:46
#34196 #34196
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ein Stack ist eine LIFO-Struktur (Last In, First Out).
Das bedeutet, dass letzte Element, dass du auf den Stack gelegt hast, ist das erste, dass du wieder liest.
Mit den Arrays von Perl kann man leicht als Stack missbrauchen

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
my $code = "( Tab1 ( TabA TabB ) Tab2 Tab3 )";
my @stack = split / /, $code;

print Combine(\@stack);

sub Combine {
my $stack = shift;
my $retval = '';

my @elements = ();
while(scalar @{$stack}) {
my $element = pop @{$stack};
if($element eq ')') {
push @elements, '[' . Combine($stack) . ']';
} elsif($element eq '(') {
last;
} else {
push @elements, $element;
}
}

$retval .= join("#", reverse @elements);
return $retval;
}
<< >> 2 Einträge, 1 Seite



View all threads created 2006-04-03 11:45.