Menu
Coddy logo textTech

Ćwiczenie #4

Lekcja 13 z 14 w kursie Lista dwukierunkowa – struktury danych, część 6 w Coddy.

challenge icon

Wyzwanie

Łatwy

Napisz funkcję moveToFront, która przyjmuje tablicę liczb całkowitych arr (wartości z listy dwukierunkowej) oraz liczbę całkowitą value, znajduje pierwsze wystąpienie value i przenosi ten węzeł na początek listy. Zwróć wynikową tablicę.

Jeśli value nie znajduje się na liście, zwróć tablicę bez zmian.

Użyj listy dwukierunkowej, aby rozwiązać ten problem!

Musisz użyć klasy DoublyLinkedList (udostępnionej w doublylinkedlist.<ext> wraz z node.<ext>) — nie używaj wbudowanych funkcji języka, takich jak odwracanie tablic, wycinanie fragmentów, sortowanie ani operacji na listach ze standardowej biblioteki, aby obliczyć wynik.

Spróbuj swoich sił

#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;
}

Wszystkie lekcje w sekcji Lista dwukierunkowa – struktury danych, część 6

Poćwicz samodzielnie: Kompilator C online