Menu
Coddy logo textTech

Practice #2

Coddy'nin Bağlı Liste - Veri Yapıları Serisi #5 kursunda ders 11 / 14.

challenge icon

Görev

Kolay

Bir tamsayı dizisi arr (bir bağlı listenin değerleri) alan ve orta değeri döndüren bir findMiddle fonksiyonu yazın.

Tek uzunluklar için tam orta değeri döndürün. Çift uzunluklar için iki orta düğümden ikincisini (indeks length / 2) döndürün. Eğer liste boşsa, -1 döndürün.

Bu problemi çözmek için bir bağlı liste kullanın! Klasik yaklaşım iki işaretçi kullanmaktır: yavaş bir işaretçi ve hızlı bir işaretçi. Hızlı işaretçi sona ulaştığında, yavaş olan ortadadır.

LinkedList sınıfını kullanmalısınız (node.<ext> ile birlikte linkedlist.<ext> dosyasında sağlanmıştır) — sonucu hesaplamak için dizilerin yerleşik ters çevirme, dilimleme veya standart kütüphane liste işlemleri gibi dile özgü yerleşik özellikleri kullanmayın.

Kendin dene

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

int main() {
    char line[8192];
    if (!fgets(line, sizeof(line), stdin)) line[0] = '\0';
    int arr[4096];
    int len = 0;
    char* tok = strtok(line, " \t\r\n");
    while (tok) { arr[len++] = atoi(tok); tok = strtok(NULL, " \t\r\n"); }
    int r = findMiddle(arr, len);
printf("%d\n", r);
    return 0;
}

Bağlı Liste - Veri Yapıları Serisi #5 bölümündeki tüm dersler