18baglanti liste ters.fw min

Python Hazır Kodlar 18 | Bağlantılı Bir Listeyi Tersine Çevirmek

Bağlantılı listeler için sıralı nesneler diyebiliriz. Bağlantılı listenin her bir öğesine de node(düğüm) denir.

Şimdi bağlantılı bir listeyi nasıl tersine çevirebileceğimize bakalım

Yöntem 1:
class Node: 
  
    # node nesnesi için bir Constructor fonksiyonu başlatalım
    def __init__(self, data): 
        self.data = data 
        self.next = None
  
class LinkedList: 
  
    # head fonksiyonunu yazalım 
    def __init__(self): 
        self.head = None
  
    # bağlantılı listeyi ters çevirme fonksiyonu
    def reverse(self): 
        prev = None
        current = self.head 
        while(current is not None): 
            next = current.next
            current.next = prev 
            prev = current 
            current = next
        self.head = prev 
          
    # Başlangıçta yeni bir node ekleme işlemi 
    def push(self, new_data): 
        new_node = Node(new_data) 
        new_node.next = self.head 
        self.head = new_node 
  
    # LinkedList yazdırmak için gerekli fonksiyon 
    def printList(self): 
        temp = self.head 
        while(temp): 
            print (temp.data,) 
            temp = temp.next
  
  
# Yukarıdaki fonksiyonları test edelim
llist = LinkedList() 
llist.push(20) 
llist.push(4) 
llist.push(15) 
llist.push(85) 
  
print ("Orj. Bağlantılı Liste")
llist.printList() 
llist.reverse() 
print ("\nTers Çevrilmiş Bağlantılı Liste")
llist.printList() 
Yöntem 2:
class Node: 
  
    # node nesnesi için bir Constructor fonksiyonu başlatalım
    def __init__(self, data): 
        self.data = data 
        self.next = None
  
class LinkedList: 
  
    # head fonksiyonunu yazalım 
    def __init__(self): 
        self.head = None
  
  
    def reverseUtil(self, curr, prev): 
          
        if curr.next is None : 
            self.head = curr  
            curr.next = prev 
            return 
          
        # curr.next node u değişkene atayalım
        next = curr.next
  
        # node u güncelleyelim
        curr.next = prev 
      
        self.reverseUtil(next, curr)  
  
  
    # reverseUtil() fonksiyonunu çağıralım
    def reverse(self): 
        if self.head is None: 
            return 
        self.reverseUtil(self.head, None) 
  
  
    # Başlangıçta yeni bir node ekleme işlemi  
    def push(self, new_data): 
        new_node = Node(new_data) 
        new_node.next = self.head 
        self.head = new_node 
  
    # LinkedList yazdırmak için gerekli fonksiyon 
    def printList(self): 
        temp = self.head 
        while(temp): 
            print (temp.data,) 
            temp = temp.next
  
  
# Programımızı çalıştıralım
llist = LinkedList() 
llist.push(8) 
llist.push(7) 
llist.push(6) 
llist.push(5) 
llist.push(4) 
llist.push(3) 
llist.push(2) 
llist.push(1) 
  
print ("Orj. Bağlantılı Liste")
llist.printList() 
  
llist.reverse() 
  
print ("\nTers Çevrilmiş Bağlantılı Liste")
llist.printList() 

Python dersleri için buraya gidebilirsiniz..

İletişim: admin@herseymi.com
Yazı oluşturuldu 96

Bir Yorum Yazın

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.

Üste dön