Array Kapazität erweitern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Array Kapazität erweitern

    guten Abend,

    Und zwar sitze ich grade vor einer Übungsklausur mit folgender Aufgabe:

    Ich soll einen Stack entwerfen der 10 Integer Elemente speichern kann.
    Diese werden mittels Pop (Herausnehmen am Anfang) und
    Push(Einfügen am Ende) Operationen gefüllt/geleert.

    Wenn die Kapazität von 10 Elementen überschritten wird, soll sich die Größe
    des Arrays verdoppeln.

    Mein Problem besteht darin, das ich nicht genau weis wie ich die Größe erweitern soll.

    Hoffe ihr könnt mir da ein paar Lösungsansätze geben

    grüße nobody
    "Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer."
  • Leider versteh ich nicht so ganz deine Gedankengänge...
    Liegt vielleicht aber an meiner Beschreibung.
    In der Aufgabenstellung ist von einem Stack die rede. Damit meint mein Prof. aber nicht den
    "eigentlichen" Stack.

    Hier mal die genaue Aufgabenstellung:

    Implementieren Sie eine Stack Datenstruktur mit Push und Pop Operation. Der Stack
    speichert int Werte und hat eine Startkapazität von 10 Elementen. Bei Überschreitung der
    Kapazität wird die Kapazität des Stacks verdoppelt.

    Kann ich eine verkettete Liste mit der Größe von 10 Elementen(die noch leer sind) am Anfang
    definieren und dann bei der Überschreitung, statt einem Element, die Größe um das doppelte erhöhen?

    Oder wäre es in dem Fall besser ein Array zu verwenden, dessen Inhalt ich einfach in eine verkette Liste
    zwischenspeichere, sobald die max. Kapazität erreicht ist und dann mir eine neues Array erzeugen lasse bloß
    mit der doppelten Kapazität und dort die Werte wieder reinschreibe?
    "Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer."
  • Der Hinweis steht doch schon in der Aufgabe. Am Anfang des Programm baust du dir doch eine simple Datenstruktur für die verkettete Liste, in etwa so:

    Quellcode

    1. typedef char * Element;
    2. typedef struct Node *List;
    3. struct Node
    4. {
    5. List next;
    6. Element info;
    7. };


    Dann definierst du bestimmt noch ein paar nützliche Funktionen für eine Liste u.a. pop & push, wenns als Keller benutzt werden soll. Normalerweise wächst dann diese Struktur nach Bedarf, aber wenn der Lehrer vorgibt dass soll in 10er Schritten passieren, machste einfach 10x push mit einem leeren Element. Du brauchst nur ein definiertes leeres Element und ein definiertes Endeelement.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.