Practice #2
Coddy'nin Bağlı Liste - Veri Yapıları Serisi #5 kursunda ders 11 / 14.
Görev
KolayBir 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;
}