# 4.3 Listeler (Lists)

C++ dilinde listeler, STL (Standard Template Library) içinde bulunan ve veri elemanlarını sıralı bir şekilde saklayan dinamik veri yapılarıdır. Listeler, dizi veya vektörlere benzer bir yapı sunar, ancak eleman ekleme ve silme işlemlerinde daha fazla esneklik sağlar. Liste veri yapısı, her bir elemanın bir sonrakine işaret ettiği düğümlerden oluşur. Bu yapı, belirli bir elemanın yerini değiştirmeden veya diğer elemanları etkilemeden kolayca eklenmesini ve çıkarılmasını sağlar.

#### Listelerin Temel Özellikleri

1. **Dinamik Boyut**: Listeler, eleman eklendikçe veya silindikçe boyutlarını otomatik olarak ayarlayabilir.
2. **İki Yönlü Bağlı Liste**: C++ listeleri, her bir düğümün bir sonraki ve bir önceki düğümü işaret etmesine olanak tanır, bu da onları iki yönlü bağlı liste olarak tanımlar. Bu özellik, liste üzerinde geri yönde de gezinmeyi mümkün kılar.
3. **Rasgele Erişim Yok**: Listelerde dizilere veya vektörlere göre rasgele erişim yoktur. Elemanlara erişmek için sıralı olarak geçmek gerekir.

#### Listelerin Kullanımı

C++'ta listeler, `#include <list>` ifadesi ile kullanılmaya başlanır. Aşağıda listelerin temel kullanımını gösteren örnekler bulunmaktadır.

**Liste Oluşturma ve Eleman Ekleme**

```cpp
#include <iostream>
#include <list>

int main() {
    // Liste oluşturma
    std::list<int> sayilar;

    // Eleman ekleme
    sayilar.push_back(10);  // Listenin sonuna ekleme
    sayilar.push_back(20);
    sayilar.push_front(5);  // Listenin başına ekleme

    // Elemanları yazdırma
    std::cout << "Liste Elemanları: ";
    for (int sayi : sayilar) {
        std::cout << sayi << " ";
    }

    return 0;
}
```

**Eleman Silme**

Listelerde eleman silmek için `pop_back()` veya `pop_front()` gibi yöntemler kullanabilirsiniz.

```cpp
#include <iostream>
#include <list>

int main() {
    // Liste oluşturma
    std::list<int> sayilar = {1, 2, 3, 4, 5};

    // Son elemanı silme
    sayilar.pop_back();

    // İlk elemanı silme
    sayilar.pop_front();

    // Kalan elemanları yazdırma
    std::cout << "Silindikten sonra Liste Elemanları: ";
    for (int sayi : sayilar) {
        std::cout << sayi << " ";
    }

    return 0;
}
```

**Liste Boyutunu Öğrenme**

Listelerin boyutunu öğrenmek için `size()` fonksiyonu kullanılabilir.

```cpp
#include <iostream>
#include <list>

int main() {
    // Liste oluşturma
    std::list<int> sayilar = {1, 2, 3, 4, 5};

    // Liste boyutunu yazdırma
    std::cout << "Liste boyutu: " << sayilar.size() << std::endl;

    return 0;
}
```

#### Sonuç

C++ listeleri, dinamik veri yönetimi konusunda esneklik sağlayarak, veri elemanlarını sıralı bir şekilde saklamanın etkili bir yolunu sunar. Eleman ekleme ve silme işlemleri, listeler üzerinde kolayca gerçekleştirilebilir.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.yavuzlar.org/egitim/c-plus-plus/4.0-veri-yapilari-data-structures/4.3-listeler-lists.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
