Bağlı listeler, elemanları birbirine linkler yardımıyla bağlanarak oluşturulmuş dinamik veri yapılarıdır.
Dizilerin bazı dezavantajlarını ortadan kaldırmaktadırlar.
 Bunlar:
          Yeni eleman ekleme
          Eleman silme
          Boyut değiştirme
Peki, bağlı listelerin yapısı nasıldır?
          Her yeni eleman için hafızada yeni yer ayrılır. Dizilerdeki gibi daha önceden yer ayırmaya gerek yoktur.
          Her eleman bir sonraki elemanın hangisi olduğu bilgisine sahiptir.
En basit bağlı listeler olan Singly Linked Lists’i inceleyelim.
Singly Linked List’te her eleman, değerini ve bir sonraki elemanın linkini yani hangi eleman olduğu bilgisini tutar. Dizilerden biraz farklı olarak bir başlangıç bir de bitiş elemanı vardır. Ayrıca listeyi gezerken o an hangi elemanda bulunduğumuzu bilmemiz için aktif eleman bulunmalıdır. Aktif eleman, ilk elamandan başlar, son elemana kadar ilerleyebilir, yani sınırları belirlidir.
Örneğin dizilere eleman eklemek istediğimiz zaman önce hangi elemanın boşta olduğunu buluruz, sonra ekleme işlemini yaparız. Burada ise eklenecek yere göre yapılan işlem değişir. Başa veya sona eklenecekse ekleme işlemi çok basittir, fakat araya eklenecekse aktif kayıt, eklenecek yeri bulmak için gezintiye çıkarıyoruz.
Listemiz oluşturulduğunda sadece iki eleman bulunur: ilk ve son eleman. İlk elemanın link kısmında sonraki elemanı son eleman, son elemandan sonra eleman olmadığı için linki kendisi olacaktır.
Örneğimizde Ogrenci sınıfında öğrenci bilgilerinin tutulduğu liste elemanları, BagliListe sınıfımızda da bağlı listemiz bulunmaktadır.
    class Ogrenci
    {
        public Ogrenci(string isim,string okulNo)
        {
            this.isim = isim;
            this.okulNo = okulNo;
        }
        public string isim;
        public string okulNo;
        //Sonraki elemanın hangi öğrenci olduğu bilgisi
        public Ogrenci sonraki;
    }
    class BagliListe
    {
        //Listenin ilk ve son elemanlarını belirliyoruz.
        public Ogrenci ilk, son;
        public BagliListe()
        {
            ilk = new Ogrenci(“ilk”,””);
            son = new Ogrenci(“son”,””);
            //Sadece iki eleman olduğundan ilk elemandan sonraki eleman son elemandır.
            ilk.sonraki = son;
            //Son elemandan sonra eleman olmadığı için son elemandan sonraki eleman kendisidir.
            son.sonraki = son;
        }
    }
Tanımlama :
BagliListe ogrenciler = new BagliListe();
Aktif Kayıt:
Ogrenci aktif = ogrenciler.ilk;
Yeni Eleman Ekleme (Araya):
Ogrenci aktif = ogrenciler.ilk;
while (aktif.sonraki != ogrenciler.son && aktif.sonraki.okulNo != yeniOgrenci.okulNo)
{
aktif = aktif.sonraki;
}
yeniOgrenci.sonraki = aktif.sonraki;
aktif.sonraki = yeniOgrenci;
Listenin Eleman Sayısı:
Ogrenci aktif = ogrenciler.ilk;
int elemanSayisi = 0;
while (aktif.sonraki != ogrenciler.son)
{
elemanSayisi++;
aktif = aktif.sonraki;
}
if (elemanSayisi == 0) { //Liste Boş }
else { //Liste Dolu }