View Full Version : Pseudocode Insert eines Elem. in Lin. Liste
Füge Ein (L,x) {
wenn L=NIL
dann {
L <- x
x.next <- NIL
return JUHU! }
else{
x.next = L
L <- x
}
return JUHU!
}
Es muss auch möglich sein an einer belieben Stelle der Liste ein Element einzufügen...
SouljaRag
16-04-2002, 22:36
Original geschrieben von Zentor
Es muss auch möglich sein an einer belieben Stelle der Liste ein Element einzufügen...
dann lässt man halt einen suchalgorithmus vorher laufen oder?
hmm... was genau soll das da sein ?
im skript is für einfügen in eine verkettete liste ein 20-zeiliger algorithmus, genauso für entfernen, zugriff usw... soll ma die alle praktisch auswendig können ???
Naja es wird dadurch schon geringfügig komplexer weil bei z.B dem Einfügen eines Elements x zwischen die Elemente A und B der Nachfolger von A und der Vorgänger von B auf x zeigen müssen. Ist eh im Skripum oder versteh ich da was falsch und die Aufgabenstellung ist eine andere?
SouljaRag
16-04-2002, 22:41
die 20-zeiligen pseudocodes sind ja für doppeltverkettete listen. . . so wie ich das sehe
btw: wollte er heute nicht den pseudocode fürs sequentielle oder fürs einfachverkettete hinschreiben?? hab da nicht so aufgepasst
der is nur für einfügen am anfang, am anderen arbeit ich noch
für einfachverkettete sinds nur 15 ;)
aber man muß ja den für mehrfachverkettete (auswendig) können damit man dann den für einfachverkettete herleiten kann <- geil was? :)
na, was hat er denn gesagt, für wELCHE listen es gefragt wird ?
sequentielle is ja viel kürzer, das is ja praktsich nur ein array, und das stell ich ma so in der art vor:
füge_ein (L , x ,p)
falls p<1 or p>n { fehler}
für i=n.... p {
L[i+1] = L[i] }
L[p]=x
n = n+1
Kann man das so schreiben mit x.next????
Ist x schon ein neues Listenelement, das pointer hat???
Wenn schon, dann muß man unterscheiden ob l nil ist, dann zeigt eben der x.next auf nil
Wenn das erste element x ist also L.key >= x.key
x.next = L
L = x
Solange ... L.next <> nil
Wenn l.next.key >= x.key
Ja, hmmm ...
Er hat das mit dem p überhaupt nicht gemacht .. das ist es halt ... es schaut eher so aus, als ob man selber die position suchen muß bei einer sortierten liste
Ich würd gern mal wissen wann ein zeigt auf (<--) hin muss und wann ich ein = schreiben kann.
Soweit ich das verstanden hab kommen = wenn ich zwei Zeiger gleichsetz.
Aber wieso kommt dann L <-- L.next ? Sind doch beides Zeiger oder nicht?
Also ist L.next / x.next ein Zeiger oder ein Element (mit Wert und Zeiger)?
also welche listen kommen überhaupt ?
einfach verkettete ?
Sowohl einfach als auch doppelt verkettete können kommen.
Wahrscheinlich einfügen eines Elements in eine sortierte Liste.
SinusDiabolicus
16-04-2002, 23:06
ähm... also mir drängen sich da ein paar fragen auf :-)
1.) NIL? is das ein anderer ausdruck für NULL?
2.) zeigt auf (<--)? wo is das auf einmal her? davon war in der VO nie die rede, und im skriptum auch nicht, ich hoff doch nicht das man das verwenden muss! (im skriptum werden die zeiger ja auch alle mit '=' verknüpft...)
war wohl so ne art pflicht-rep? *gg*
das letzte elem. zeigt nach/ins NIl (unendliche)
zeigt auf hat er heut denk ich eingefährt!
war aber blöd zu lesn entweder <- oder =
pflicht rep für pseudocode schreibn uf jedenfall
aber es is schon aus (22:10)
#!/usr/bin/perl
17-04-2002, 00:05
bin zwar schon am eingschlafen, aber wenn eine doppelt verkettete Liste vorliegt, die ueberdies sortiert is, und man ein Element x in die sortierte Liste einfuegen soll und nacher wieder eine sortierte Liste da sein soll, dann wuerd ich einfach Element fuer Element ( h = referenz auf akt el ) durchgehen bis
( h.inhalt =< x && h.nachfolger.inhalt >= x )
und die refs halt dann noch richtig setzten
aber wie gsagt ich kann die augen kaum mehr offenhalten
:o
Original geschrieben von Iris
Kann man das so schreiben mit x.next????
Ist x schon ein neues Listenelement, das pointer hat???
Ja, hmmm ...
seite 25 steht inFüge_ein(x,p,L):
Z8: neu = neues Listenelement(x);
also muss ein neues listenelement erstellt und dann eingefügt werden... entweder an die stelle p oder eben einsortieren bei sortierter liste.
warum auf einmal zwischen "<-" zeigt auf und "=" unterschieden wird, find ich ein wenig arg, weil im skriptum, in der vorlesung und in der übung da nie ein unterschied gemacht wurde. also werd ich beim test auch keinen machen.
lg peter
Ok ich glaub diese <-- sind eh das gleiche wie =
War nur kurzzeitig etwas verwirrend weil er plötzlich mit Zeigern usw. herumgewerkelt hat und im Skriptum nichts davon steht.
Also lasst euch nicht auch noch verwirren und vergesst das mit den <-- ganz schnell wieder :-)
also was sagt ihr zu meiner Loesung???
// einfuegen das Element p in einer sortierte liste
solange (L <> NIL)
{
falls (L.next <> NIL)
{
falls (L.next.key >= p)
{
P.next = L.next; // wobei P der Zeiger vom neun element ist
L.next = P;
return ERFOLG;
}
L <--- L.next;
}
L.next <-- P;
P.next <-- NIL;
}
Original geschrieben von SuperT
also was sagt ihr zu meiner Loesung???
// einfuegen das Element p in einer sortierte liste
solange (L <> NIL)
{
falls (L.next <> NIL)
{
falls (L.next.key >= p)
{
P.next = L.next; // wobei P der Zeiger vom neun element ist
L.next = P;
return ERFOLG;
}
L <--- L.next;
}
L.next <-- P;
P.next <-- NIL;
}
sieht schon sehr gut aus. ich glaube aber das die
vorvorletze zeile: L.next <-- P;
und die vorletze: P.next <-- Nil;
weggehört. Oder liege ich da falsch????????
also ich glaube du liegst da falsch denn diese beide zeilen werden erst dann ausgefuehrt wenn ...falls (L.next <> NULL) nicht ausgefuellt ist also falls das element am ende eingefuegt werden sollte dann muess ich L.nest also den zeiger auf denn neuen element zeigen lassen und denn neuen element also P auf NIL zeigen lassen...
aja. stimmt. da hast du recht.
aber laut deinen überlegungen stehen die zwei befehle ausserhalb der letzen klammer
falls (L<>NIL)
{...
}
sonst
{L.next <-- P;
P.next <-- NIL;
}
so seh ich das auch!
kannst du sagn ob mein unsortierter stimmt SuperT???
Bin schon zu müde um mir das richtig anzusehen aber was ist wenn schon das erste Element größer ist als P?
vBulletin® v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.