Wie eine verknüpfte Liste in C-Programmierung zu bearbeiten

Da eine verknüpfte Liste in der C-Programmierung zusammen mit Verweisen auf Speicherstellen gekettet ist, die Bearbeitung wird durch Modifizieren dieser Speicherplätze getan. Zum Beispiel, wenn Sie das dritte Element aus der Liste entfernen möchten, ausweichen Sie einfach um es durch das zweite Element mit dem vierten Element verbindet. Der dritte Punkt ist wirksam entfernt werden (und verloren) von dieser Operation.

bild0.jpg

Ebenso können Sie ein Element in die Liste ein, indem Sie den nächsten Zeiger aus dem vorherigen Element zu bearbeiten.

image1.jpg

Der beste Weg, Elemente in einer Liste zu ändern, ist ein interaktives Programm, das Sie sehen können, hinzufügen, einfügen, löschen und bearbeiten Sie die verschiedenen Strukturen. Ein solches Programm wäre sehr lang und komplex sein, weshalb man es in einer interaktiven Linked-List-Programm abgebildet erhältlich sind.

Eine interaktive verketteten Liste PROGRAMM

/ * Eine interaktive verknüpfte Liste Programm * // * Dan Gookin, Programmierung mit C Anfang für Dummies * / # include # include # include Struktur typisch {int value-Struktur typische * nächste -} - struct typische * First-Struktur typische * Strom-Struktur typische * new-int-Menü (void) -Lücke hinzufügen (void) -Lücke Show (void) -Lücke löschen (void) -struct typisch * erstellen (void) - / * Die Hauptfunktion arbeitet mit Eingangs onlyEverything sonst gehandhabt durch eine Funktion * / int main () {int Wahl = ' 0'- / * die while-Schleife erhalten Spin * / first = NULL-while (Auswahl =' {Wahl = Menü () Q ') - Schalter (Wahl) {case 'S': Show () - Break-case 'A': add () - Break-case 'R': delete () - Break-case 'Q': break-default: Break-}} return (0) -} / * das Hauptmenü zur Anzeige und Eingabe * / int Menü (void) {int ch-printf ( "S), wie A) dd, R) emove, Q) uit:" sammeln) CH = getchar () - während (getchar () = ' n'!) / * überschüssiges Eingang * / - return (toupper (ch)) -} / * ein Element an das Ende der verknüpften Liste * / void add ( void) {if (first == NULL) / * Sonderfall für das erste Element * / {zuerst erstellen = () - current = erster} else / * finden Sie das letzte Element * / {current = first-while (strom- > weiter) / * letzte Element == NULL * / current = strom-> next-new = create () - strom-> next = neuen- / * Update-Link * / current = neuen-} printf ( "Geben Sie einen Wert: ") -scanf ("% d ", strom-> Wert) -current-> next = NULL-while (getchar () = ' n') / * Überschuss Eingang entfernen * / -} / * alle Strukturen anzeigen in die verknüpfte Liste * / void show (void) {int count = 1-if (erste == NULL) / * diese Liste ist leer * / {puts ( "Nichts zu zeigen") - Rücklauf-} puts ( "alle Datensätze : ") - Strom = first-while (Strom) / * letzte Datensatz == NULL * / {printf (" Datensatz% d:% d n ", zählen, strom-> value) -Strom = strom-> Next- Count ++ -}} / * einen Datensatz aus der Liste entfernen * / void delete (void) {struct typisch * Vorige- / * bisherigen Rekord * / int r speichern, c-if (erste == NULL) / * für leere Liste überprüfen * / {puts ( "Keine Datensätze entfernen") - Rücklauf-} puts ( "einen Datensatz auswählen zu entfernen:") - show () - printf ( "Record:") -scanf ( "% d", r) - während (getchar () = ' n'!) / * Überschuss Eingang * / entfernen - c = 1-current = first-previous = NULL- / * erste Datensatz hat keine vorherige * / while (c = r!) {if (Strom == NULL) / * sicherstellen, dass "r" ist in Reichweite * / {puts ( "Record nicht gefunden") - Rücklauf-} previous = Strom-Strom = strom-> next-c ++ -} if (vorherige == NULL) / * Sonderfall für erste Datensatz * / first = strom-> next-else / * Punkt bisherigen Rekord bei der nächsten * / Vorige-> next = strom-> next-printf ( "Datensatz% d entfernt. n", r) -freie (Strom) - / * Release Speicher * /} / * eine leere Struktur beim Aufbau und das Rück seine Adresse * / struct typische * erstellen (void) {struct typisch * aa = (struct typisch *) malloc (sizeof (struct typisch)) - if (a == null) {puts ( "Irgendeine Art von malloc () Fehler") - Ausgang (1) -} return (a) -}

Übung 1: Wenn Sie die Zeit haben, geben Sie den Quellcode von einem interaktiven Linked-List-Programm in Ihren Editor. Typing es in hilft Ihnen besser, den Code zu verstehen. Es gibt Kommentare enthalten, um Ihnen zu helfen, zu sehen, was los ist. Bauen und laufen ein paar Mal den Fall von ihm zu bekommen.

Beachten Sie, dass löschen ist eine C ++ Schlüsselwort und nicht als Funktion (oder Variable) Name verwendet werden kann, wenn C ++ Code zu kompilieren.

Menü