Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Frage zum Löschen im Ringspeicher (https://www.delphipraxis.net/83926-frage-zum-loeschen-im-ringspeicher.html)

fwsp 8. Jan 2007 16:22


Frage zum Löschen im Ringspeicher
 
Hallo,

ich soll einen Priority-Queue mit Hilfe eines Ringspeichers implementieren. Das macht mir soweit auch keine Probleme, bis auf die Prozedur Remove, die das Element mit der höchsten Priorität aus dem Queue löscht. Da das ganze ja auf einem statischen Array basiert, hätte ich ja dann ein Speicherplatz, der mitten im Array liegt und sich schlecht verwalten lässt.
Mein Ansatz wäre es jetzt, die dahinter liegenden Elemente einen Platz vorrücken zu lassen, was aber bei einem längeren Queue vllt nicht mehr die beste Idee ist.
Hat jemand vllt noch einen anderen Ansatz? Google und Wikipedia haben mir leider nichts verraten können.

Danke.

sirius 8. Jan 2007 16:26

Re: Frage zum Löschen im Ringspeicher
 
Du solltest vielleicht statt eines statischen arrays eine Klasse verwenden wie:
TList
TStringList
TObjectList

fwsp 8. Jan 2007 16:27

Re: Frage zum Löschen im Ringspeicher
 
Zitat:

Zitat von sirius
Du solltest vielleicht statt eines statischen arrays eine Klasse verwenden wie:
TList
TStringList
TObjectList

das liegt nicht in meiner hand. es soll auf einem statischen array basieren.

sirius 8. Jan 2007 16:34

Re: Frage zum Löschen im Ringspeicher
 
Hmm, na dann bleibt dir ja nur das Verschieben. oder du kopierst das letzte Element in die Lücke, falls das nichts durcheinander bringt.

Edit: Das dürfte ja nicht gehen, wie sieht denn ein array-element aus?

mschaefer 8. Jan 2007 16:35

Re: Frage zum Löschen im Ringspeicher
 
Moin, moin,

bei der geforderten Struktur würde ich den Eintrag als gelöscht markieren und an seinem Platz belassen.

Grüße // Martin

fwsp 8. Jan 2007 16:37

Re: Frage zum Löschen im Ringspeicher
 
Zitat:

Zitat von mschaefer
Moin, moin,

bei der geforderten Struktur würde ich den Eintrag als gelöscht markieren und an seinem Platz belassen.

Grüße // Martin

und dann drüberspeichern? das würde mir dann doch die reihenfolge zerstören, die ja neben der priorität auch wichtig ist. (FIFO)

mschaefer 8. Jan 2007 16:42

Re: Frage zum Löschen im Ringspeicher
 
Lasss das mit dem Drüberspeichern! Der Eintrag ist sozusagen nil. Wenn eine gewisse Anzahl Einträge leer sind, dann könnte man die Queue nachrücken lassen. Es lohnt halt nicht für einen Eintrag, wie Du schon selbst dargestellt hast.

Grüße // Martin

fwsp 8. Jan 2007 16:53

Re: Frage zum Löschen im Ringspeicher
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich hab das jetzt gemacht, wie ich im ersten post beschrieben hab, die dateien sind im anhang, falls es jemanden interessiert.

mr47 8. Jan 2007 16:55

Re: Frage zum Löschen im Ringspeicher
 
OT: Ich weiß nicht wer dir die Anweisungen gegeben hat, aber das ist ziemlich unprofessionell. Sowas wäre deutlich schöner mit verketteten Listen zu lösen. :duck:

fwsp 8. Jan 2007 16:56

Re: Frage zum Löschen im Ringspeicher
 
Zitat:

Zitat von mr47
OT: Ich weiß nicht wer dir die Anweisungen gegeben hat, aber das ist ziemlich unprofessionell. Sowas wäre deutlich schöner mit verketteten Listen zu lösen. :duck:

kommt drauf an was man bezwecken will. aber um dich zu beruhigen: mein pt prof hat uns das gleiche auch mit verketteten liste aufgegeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz