Menu
CoddyTech

Latihan #4

Pelajaran 13 dari 14 dalam kursus Daftar Berantai Ganda, Seri Struktur Data #6 di Coddy.

challenge icon

Tantangan

Mudah

Tulis fungsi moveToFront yang menerima array bilangan bulat arr (nilai-nilai dalam doubly linked list) dan bilangan bulat value, mencari kemunculan pertama dari value, lalu memindahkan node tersebut ke bagian depan list. Kembalikan array hasilnya.

Jika value tidak ada di dalam list, kembalikan array tanpa perubahan.

Gunakan doubly linked list untuk menyelesaikan masalah ini!

Kamu harus menggunakan class DoublyLinkedList (disediakan dalam doublylinkedlist.<ext> bersama node.<ext>), jangan gunakan fitur bawaan bahasa seperti reverse, slicing, atau sort pada array, maupun operasi list dari stdlib untuk menghitung hasilnya.

Coba sendiri

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

Semua pelajaran di Daftar Berantai Ganda, Seri Struktur Data #6

Latihan sendiri: Compiler C online