Tek Yönlü Bağlı Bir listeye Öğe İşlemleri
Tek yönlü bağlı bir listenin başına bir öğe eklemek, genellikle oldukça hızlı ve basit bir işlemdir. Bu işlem, genellikle O(1) zaman karmaşıklığına sahiptir çünkü başa ekleme işlemi sabit sayıda adımda gerçekleştirilir.
Bağlı listenin başına bir öğe eklemek için aşağıdaki adımlar izlenir:
Yeni Düğüm Oluştur: İlk olarak, listenin başına eklemek istediğiniz değeri içeren yeni bir düğüm oluşturmalısınız.
Yeni Düğümün Referansını Ayarla: Yeni düğümün next referansını, şu anki baş düğüme işaret edecek şekilde ayarlayın.
Baş Düğümü Güncelle: Şimdi baş düğümü, yeni oluşturduğunuz düğüme işaret edecek şekilde güncelleyin. Böylece yeni düğüm, listenin başı olur.
İşte bir Python kodu örneği:
class Node: def __init__(self, data=None): self.data = data self.next = None class SinglyLinkedList: def __init__(self): self.head = None def prepend(self, data): new_node = Node(data) # 1. Yeni düğümü oluştur new_node.next = self.head # 2. Yeni düğümün sonrakini şu anki baş düğüm olarak ayarla self.head = new_node # 3. Baş düğümü yeni düğüm olarak güncelle def print_list(self): # ... # ...
Bu örnekte, prepend metodu, verilen veriyi bağlı listenin başına eklemek için kullanılır. Başa ekleme işlemi, tek yönlü bağlı listelerde oldukça yaygın bir işlemdir ve yukarıda açıklanan adımları izler.
Tek yönlü bağlı bir listenin sonuna (tail) bir öğe eklemek de yaygın bir işlemdir. Bu işlem, bağlı listenin sonunda bulunan kuyruk düğümüne erişim gerektirdiğinden, genellikle O(n) zaman karmaşıklığına sahiptir, burada n listenin uzunluğudur.
Bağlı listenin sonuna bir öğe eklemek için aşağıdaki adımlar izlenir:
Yeni Düğüm Oluştur: İlk olarak, listenin sonuna eklemek istediğiniz değeri içeren yeni bir düğüm oluşturun.
Son Düğüme Git: Şu anki baş düğümden başlayarak, son düğüme (sonraki referansı None olan düğüm) kadar ilerleyin.
Son Düğüme Ekle: Son düğümün next referansını yeni oluşturduğunuz düğüme işaret edecek şekilde ayarlayın.
İşte bir Python kodu örneği:
class Node: def __init__(self, data=None): self.data = data self.next = None class SinglyLinkedList: def __init__(self): self.head = None def append(self, data): new_node = Node(data) # 1. Yeni düğümü oluştur if not self.head: # Eğer liste boşsa self.head = new_node # Yeni düğümü baş düğüm yap return last_node = self.head while last_node.next: # 2. Son düğüme kadar ilerle last_node = last_node.next last_node.next = new_node # 3. Son düğümün sonrakisine yeni düğümü ata def print_list(self): # ... # ...
Bu örnekte, append metodu, verilen veriyi bağlı listenin sonuna eklemek için kullanılır. Sonuna ekleme işlemi, bu adımları takip eder ve özellikle listenin sonuna eklemeler yapıldığında kullanılır.
Tek yönlü bir bağlı listeden bir öğeyi kaldırmak, belirli bir değere veya belirli bir konuma sahip bir düğümü silmek anlamına gelir. İşte bu işlemi gerçekleştirmek için izlenebilecek adımlar:
Belirli Bir Değere Sahip Düğümü Silme
Silinmek İstenen Düğümü Bul: İlk olarak, silmek istediğiniz değeri içeren düğümü bulmalısınız. Bu, baş düğümden başlayarak listenin sonuna kadar ilerleyerek yapılabilir.
Önceki Düğümü Takip Et: Silmek istediğiniz düğümden bir önceki düğümün referansını takip etmelisiniz, çünkü bu düğümün next referansını güncellemeniz gerekecek.
Bağları Güncelle: Silmek istediğiniz düğümden bir önceki düğümün next referansını, silmek istediğiniz düğümün sonraki düğümüne işaret edecek şekilde güncelleyin.
Düğümü Sil: Artık silmek istediğiniz düğümü güvenli bir şekilde silebilirsiniz.
İşte bir Python kodu örneği:
class SinglyLinkedList: # ... # ... def remove(self, data): current_node = self.head # Eğer baş düğüm silinecek düğüm ise if current_node and current_node.data == data: self.head = current_node.next current_node = None return prev_node = None while current_node and current_node.data != data: prev_node = current_node # Önceki düğümü takip et current_node = current_node.next # 1. Silmek istenen düğümü bul # Eğer değer listede yoksa if current_node is None: return prev_node.next = current_node.next # 3. Bağları güncelle current_node = None # 4. Düğümü sil
Bu remove metodu, verilen bir değere sahip düğümü bağlı listeden siler. İlk düğümün silinip silinmediğini kontrol etmek için ek bir kontrol gerekebilir, çünkü bu durumda baş düğümü güncellemek gerekebilir.
Notlar:
Eğer silmek istediğiniz düğüm baş düğüm ise, baş düğümü silinecek düğümün sonraki düğümüne işaret edecek şekilde güncellemelisiniz.
Eğer silmek istediğiniz değer listede yoksa, uygun bir hata mesajı döndürebilir veya hiçbir şey yapmadan fonksiyondan çıkabilirsiniz.
Silme işlemi genellikle O(n) zaman karmaşıklığına sahiptir, çünkü belirli bir değeri içeren düğümü bulmak için listenin tamamının taranması gerekebilir.
0 Comments
Recommended Comments
There are no comments to display.