Gibt es guten Grund nicht mehrere Knoten Zeiger in einem Knoten enthalten in mehr als eine Datenstruktur zu verwenden?

stimmen
0

Nehmen Sie zum Beispiel die Zuordnung arbeite ich an. Wir sind für ein Stück eines Satzes von Daten, die einen binären Suchbaum zu verwenden und dann einer verbundenen Liste für ein anderes Stück im Set. Die vorgeschlagene Methode des Professor war:

struct treeNode
{
    data * item;
    treeNode *left, *right;
};

struct listNode
{
    data * item;
    listNode *next, *prev;
};

class collection
{
public:
         ........
}

Wo Daten ist eine Klasse, die Angaben jeden Datensatz enthält. Offensichtlich wie es eingerichtet, ein treeNode kann nicht in der verknüpften Liste existiert.

Wäre es nicht viel einfacher sein:

struct node
{
    data * item;
    node *listNext, *listPrev, *treeLeft, *treeRight;
};

dann können wir erklären:

node * listHead;
node * treeRoot;

und umfassen sowohl Einführungs Algorithmen in die Klasse.

Gibt es etwas, was ich bin fehlt?

Veröffentlicht am 09/03/2011 um 19:33
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
0

Sie können das tun, aber Sie verschwenden Speicher mit den zusätzlichen Zeiger. Auch neigt es eher verwirrend zu sein Typen so zu mischen. Bin ich in der Annahme richtig, dass die Daten entweder in die Liste gesetzt oder in den Baum setzen, aber nicht in beide eingefügt? Es gibt wirklich nicht viel Grund, sie beide die gleiche Struktur verwenden zu haben, wenn sie ohnehin verschiedene Datentypen sind. Wenn Sie die gleichen Daten in beiden Typen einfügen, könnten Sie möglicherweise aus schalten Sie den Baum zu durchqueren die Liste durchlaufen, wenn Sie eine Anwendung für eine solche Aktion durchgeführt hat.

Da Sie die Daten in beiden Listen sind Einfügen, würde es Speicher speichern Sie Ihre Composite-Knotenstruktur zu verwenden. Ich würde in den binären Baum einzufügen zuerst, dann die zugeteilten Knoten in der verketteten Liste einzufügen. Sie würden nicht wirklich mit einer reinen verknüpften Liste oder einem binären Suchbaum am Ende, aber es wäre in der Lage, wie entweder eine durchlaufen werden.

Beantwortet am 09/03/2011 um 21:08
quelle vom benutzer

stimmen
0

Eigentlich sind die Datenelemente in beiden Listen eingefügt werden. Der (banale) Zweck der Zuordnung der Datensätze in zwei verschiedenen Elementen in dem Satz zu sortieren.

Also mit dieser sagte, würde ich Speicher gespart werden nicht? Die Kombination der zwei Knoten I mit 5 Zeiger am Ende, wenn ich ihnen, dass ich mit 6 auch wirklich nur von Daten auf diese Weise eine Gruppe haben würde trennen ließ ich. wenn ich 250 Datenelemente mussten, um zu verfolgen, würde ich eine Gruppe von 1250 Zeiger anstelle von 2 Listen von 750. haben vielleicht Missverständnisse ich, was tatsächlich mit Zeiger Anrufe zugewiesen wird.

Beantwortet am 09/03/2011 um 21:59
quelle vom benutzer

stimmen
0

Was war die Antwort?

Wenn Ihre Daten kleiner als (hmmm) Megabyte, keine Sorge über den Speicherverbrauch. 1 oder 2 Gigabytes ist in normalen Computer heute typisch.

Wie groß sind die Einzelteile? 32 Zeichen? 64k von komprimierten Multimedia? Etwas Großes?

Wie sinnvoll ist es ein Element zu organisieren beide Techniken? Ist die Daten wirklich gleich sind, dann eine 5 Zeigerstruktur ist interesting- jemand einen Knoten in einer Ordnung finden konnte, und dann im Zusammenhang Knoten in der anderen Reihenfolge sehen.

Sind die Gegenstände in keinem Zusammenhang, einige Kreide, etwas Käse? Sind sie mehrdimensionale? persönliche Rekorde? Audio-Datei Beschreibungen? Rezepte?

In der Schule ist ein guter Lehrer versuchen Sie Erfahrung mit gemeinsamen Techniken und Disziplinen zu geben. Genau wie die Kunst-Klasse oder Zusammensetzung. Bleistift, Pastell, 5 Absatz Essay. So könnte der Lehrer wollen Sie zwei verschiedene Klassen und Konstrukteure schreiben. Verwenden einen struct für einen Teil der Daten, die anderen für andere Daten. Oder gleich. Nur weil.

Außerhalb der Schule kommen die Daten in einem Format, und es gibt Operationen erwünscht / mit ihm. „Use Cases“ sind Geschichten darüber, wie Daten verwendet wird, was zu halten hat, welche Algorithmen verwendet werden.

Der Punkt könnte dies bimodale Suchen, 2 Paare von orthogonalen Zeigern sein. Es könnte Unions sein, wobei jedes Element mit einer Liste oder einem Baum, aber nicht beides zugleich Netze verbundenen ist. Es könnte eine Flut von lightwieght Subsets, Bäume und Listen sein, die verglichen werden und kontrastiert ...

Im Zweifelsfall „Datenstrukturen + Algorithmen = Programme“. Aber es lohnt sich zu wissen, welche Stelle der Lehrer zu machen versucht, und ob Sie wollen, dass ihre Führung folgen. (In der Regel, in der Schule, tun Sie.)

Beantwortet am 12/04/2011 um 01:51
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more