Menu
Coddy logo textTech

Practice #4

Lektion 13 von 14 im Kurs Doppelt verkettete Liste - Datenstrukturen-Serie #6 von Coddy.

challenge icon

Aufgabe

Einfach

Schreiben Sie eine Funktion moveToFront, die ein Ganzzahl-Array arr (die Werte einer doppelt verketteten Liste) und eine Ganzzahl value erhält, das erste Vorkommen von value findet und diesen Knoten an den Anfang der Liste verschiebt. Geben Sie das resultierende Array zurück.

Wenn value nicht in der Liste enthalten ist, geben Sie das Array unverändert zurück.

Verwenden Sie eine doppelt verkettete Liste, um dieses Problem zu lösen!

Sie müssen die Klasse DoublyLinkedList verwenden (bereitgestellt in doublylinkedlist.<ext> zusammen mit node.<ext>) — verwenden Sie keine in der Sprache eingebauten Funktionen wie das Umkehren von Arrays, Slicing, Sortieren oder stdlib-Listenoperationen, um das Ergebnis zu berechnen.

Probier es selbst

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "solution.h"

int main() {
    char line1[8192];
    char line2[64];
    if (!fgets(line1, sizeof(line1), stdin)) line1[0] = '\0';
    if (!fgets(line2, sizeof(line2), stdin)) line2[0] = '\0';
    int arr[4096];
    int len = 0;
    char* tok = strtok(line1, " \t\r\n");
    while (tok) { arr[len++] = atoi(tok); tok = strtok(NULL, " \t\r\n"); }
    int n = atoi(line2);
    int rs = 0;
    int* r = moveToFront(arr, len, n, &rs);
    for (int idx = 0; idx < rs; idx++) {
        if (idx > 0) printf(" ");
        printf("%d", r[idx]);
    }
    printf("\n");
    return 0;
}

Alle Lektionen in Doppelt verkettete Liste - Datenstrukturen-Serie #6