2024 BAHAR YARI YILI VERİ YAPILARI DERSİ
İKİNCİ ÖĞRETİM UYGULAMA SINAVI 3
29.11.2024
Yanıtlar Dev-C++ IDE’si kullanılarak yazılacak olup aşağıda gösterildiği gibi
numara_ad_soyad formatında masaüstüne kaydedilmelidir.
Örnek dosya adı: 231223000_vecihi_hurkus.cpp
Aşağıda verilen kod bloğu kullanılacaktır. Verilmiş olan kodlar üzerinde herhangi bir kısmı
silmeyiniz ya da değiştirmeyiniz. Sorularda istenilenlere göre verilen fonksiyonların içeriğini
doldurunuz.
#include <stdio.h>
#include <stdlib.h>
// Tek yonlu bagli liste dugumu
struct Dugum {
int veri;
struct Dugum* sonraki;
};
// Yeni dugum olusturma fonksiyonu
struct Dugum* dugumOlustur(int veri) {
struct Dugum* yeniDugum = (struct Dugum*)malloc(sizeof(struct Dugum));
yeniDugum->veri = veri;
yeniDugum->sonraki = NULL;
return yeniDugum;
}
// Listenin sonuna eleman ekleme fonksiyonu
void listeSonaEkle(struct Dugum** bas, int veri) {
struct Dugum* yeniDugum = dugumOlustur(veri);
if (*bas == NULL) {
*bas = yeniDugum;
return;
}
struct Dugum* gecici = *bas;
while (gecici->sonraki != NULL) {
gecici = gecici->sonraki;
}
gecici->sonraki = yeniDugum;
}
// Listeyi yazdirma fonksiyonu
void listeyiYazdir(struct Dugum* bas) {
struct Dugum* gecici = bas;
while (gecici != NULL) {
printf("%d -> ", gecici->veri);
gecici = gecici->sonraki;
}
printf("NULL\n");
}
void Son_Elemean_Haric_Yaz(struct Dugum* bas)
{
printf("");
}
int Carpma(int sayi1, int sayi2)
{
return 0;
}
int main() {
struct Dugum* bas = NULL;
// Liste basa ve sona eklemeler
listeSonaEkle(&bas, 0);
listeSonaEkle(&bas, 1);
listeSonaEkle(&bas, 2);
listeSonaEkle(&bas, 3);
listeSonaEkle(&bas, 30);
listeSonaEkle(&bas, 21);
listeSonaEkle(&bas, 12);
listeSonaEkle(&bas, 3);
printf("Liste: ");
listeyiYazdir(bas);
printf("\n\n");
Son_Elemean_Haric_Yaz(bas);
printf("\n\n");
printf("Carpma isleminin sonucu %d \n\n", Carpma(-5, 4));
printf("Carpma isleminin sonucu %d \n\n", Carpma(-5, 0));
return 0;
}
SORULAR
1. Kendisine parametre olarak gelen Tek Yönlü Bağlı Liste’nin elemanlarını son elemanın hariç
baştan yazdıran Özyinelemeli (Recursive) Fonksiyonu yazınız.
2. Kendisine parametre olarak gelen iki tam sayının çarpımını, toplama işlemi kullanılarak
hesaplayan Özyinelemeli (Recursive) Fonksiyonu yazınız. sayi2 değişkeninin hiçbir zaman
negatif bir tamsayı olmayacağını kabul ediniz.
Size verilen main fonksiyonu çalıştırıldığında olması gereken ekran çıktısı Şekil 1’de
verilmiştir.
Şekil 1. Ekran çıktısı.