Çiftli Bağlı Listeler

Çiftli bağlı liste oluşturma ve bunun bir döngü ile gerçekleştirilmesi, listenen başına ve sonuna eleman ekleme, ilgili listeden eleman silme örneklerini inceleyebilirsiniz.

Örnek-1: 3 elemanlı çiftli bağlı bir liste oluşturunuz.


using System;

namespace ciftliBagliListe
{
class Program
{
static Ciftli Head;
class Ciftli
{
public int data;
public Ciftli next;
public Ciftli prev;
}
static void Main(string[] args)
{
Ciftli a = new Ciftli();
a.data = 0;
a.next = null;
a.prev = null;

Ciftli b = new Ciftli();
b.data = 1;
a.next = b;
b.prev = a;
b.next = null;

Ciftli c = new Ciftli();
c.data = 2;
b.next = c;
c.prev = b;
c.next = null;

Head = a;

while (a != null)
{
Console.WriteLine(a.data);
a = a.next;
}
}
}
}

Örnek-2: Head, çiftli bağlı listenin ilk elemanına bakmaktadır. 10 elemanlı, veri değeri indis değerine eşit olan çiftli bağlı liste oluşturunuz. Bu listeyi baştan sona ve sondan başa yazdırarak kontrol ediniz.


using System;

namespace ciftliBagliListe_2
{
class Program
{
static Ciftli Head;
class Ciftli
{
public int data;
public Ciftli next;
public Ciftli prev;
}
static void Main(string[] args)
{
Ciftli a = null;
Ciftli x = null;
for (int i = 0; i < 10; i++)
{
a = new Ciftli();
a.data = i;
a.next = null;
if (Head == null)
{
Head = a;
a.prev = null;
x = a;
}
else
{
a.prev = x;
x.next = a;
x = a;
}
}

x = Head;
while (x != null)
{
Console.WriteLine(x.data);
x = x.next;
}

Console.WriteLine("-----");

x = a;
while (x != null)
{
Console.WriteLine(x.data);
x = x.prev;
}
}
}
}

Örnek-3: Head, çiftli bağlı listenin ilk elemanına bakmaktadır. Listenin başına eleman ekleyiniz.


using System;

namespace ciftliBagliListe_3
{
class Program
{
static Ciftli Head;
class Ciftli
{
public int data;
public Ciftli next;
public Ciftli prev;
}
static void Main(string[] args)
{
Ciftli a = null;
Ciftli x = null;
for (int i = 0; i < 10; i++)
{
a = new Ciftli();
a.data = i;
a.next = null;
if (Head == null)
{
Head = a;
a.prev = null;
x = a;
}
else
{
a.prev = x;
x.next = a;
x = a;
}
}
Ciftli b = new Ciftli();
b.data = 1234;
b.next = Head;
b.prev = null;
Head.prev = b;
Head = b;

x = Head;
while (x != null)
{
Console.WriteLine(x.data);
x = x.next;
}

Console.WriteLine("----");

x = a;
while(x != null)
{
Console.WriteLine(x.data);
x = x.prev;
}
}
}
}

Örnek-4: Head, çiftli bağlı listenin ilk elamanına bakmaktadır. Listenin sonuna 1 eleman ekleyiniz.
Listeyi baştan sona ve sondan başa yazdırarak elemanın eklenip eklenmediğini ve çiftli bağlı liste yapısının oluşup oluşmadığını gözlemleyiniz.


using System;

namespace ciftliBagliListe_4
{
class Program
{
static Ciftli Head;
class Ciftli
{
public int data;
public Ciftli next;
public Ciftli prev;
}
static void Main(string[] args)
{
Ciftli a = null;
Ciftli x = null;
for (int i = 0; i < 10; i++)
{
a = new Ciftli();
a.data = i;
a.next = null;
if (Head == null)
{
Head = a;
a.prev = null;
x = a;
}
else
{
a.prev = x;
x.next = a;
x = a;
}
}
Ciftli b = new Ciftli();
b.data = 1234;
x.next = b;
b.prev = x;
b.next = null;

x = Head;
while (x != null)
{
Console.WriteLine(x.data);
x = x.next;
}
}
}
}

Örnek-5: Head, çiftli bağlı listenin başına bakmaktadır. Çiftli bağlı listeden 5 olan elemanı siliniz.
Ardından listenin elemanlarını yazdırarak elemanın silinip silinmediğini kontrol ediniz.

using System;

namespace ciftliBagliListe_5
{
class Program
{
static Ciftli Head;
class Ciftli
{
public int data;
public Ciftli next;
public Ciftli prev;
}
static void Main(string[] args)
{
Ciftli a = null;
Ciftli x = null;
for (int i = 0; i < 10; i++)
{
a = new Ciftli();
a.data = i;
a.next = null;
if (Head == null)
{
Head = a;
a.prev = null;
x = a;
}
else
{
a.prev = x;
x.next = a;
x = a;
}
}

x = Head;
while (x != null)
{
if (x.data == 5)
{
x.next.prev = x.next.prev.prev;
x.prev.next = x.prev.next.next;
}
x = x.next;
}
x = Head;
while (x != null)
{
Console.WriteLine(x.data);
x = x.next;
}
}
}
}