Langsung ke konten utama

CIRCULAR LINKED LIST(phyton)

kali ini saya akan memposting tentang circular list atau bisaa dibilang untaian melingkar.untaian melingkar(circular list) merupakan salah satu dari list yang digunakan dalam menstrukturkan data tanpa banyak basa basi lagi lansung saja saya sudah mengumpulkan dari berbagai sumber yang ada semoga
bermanfaat.



         Circular list adalah double / single Linked List yang simpul terakhirnya menunjuk ke simpul awal, dan simpul awalnya menunjuk ke simpul akhir, atau dapat disebut Linked List yang dibuat seakan-akan merupakan sebuah lingkaran dengan titik awal dan titik akhir saling bersebelahan jika Linked List tersebut masih kosong.Circular list adalah bentuk lain dari linked list yang memberikan fleksibilitas dalam melewatkan elemen. Circular list bisa berupa single linked list atau double linked list, tetapi tidak mempunyai tail. Pada circular list, pointer next dari elemen terakhir menunjuk ke elemen pertama dan bukan menunjuk NULL. Pada double linked circular list, pointer prev dari elemen pertama menunjuk ke elemen terakhir.Pada circular linked list, data/node pertama(head) akan terhubung dengan node/data terakhir(tail), sehingga akan membentuk pola seperti lingkaran. Pada circular linked list ini, maka tidak terdapat pointer yang menunjuk ke NULL, karena tail->next=head dan juga head->prev=tail(pada double linked list) atau hanya ada tail->next=head pada single linked list.
Operasi pada Circular list
Insert
Insert berfungsi untuk menambahkan sebuah elemen baru ke dalam suatu linked list.
Langkah-langkah untuk proses dibawah adalah sebagai berikut:
1. Telusuri list sampai elemen tertentu, catat juga elemen sebelumnya
2. Lakukan penyisipan sebelum elemen tertentu tersebut
class Link (object):
  def __init__ (self, data, next = None):
    self.data = data
    self.next = next

class CircularList(object):
  def __init__(self):
    self.first = None

 # Insert an element in the list
  def insert ( self, item ):
    newLink = Link (item)
    current = self.first

    if (current == None):
      self.first = newLink
      return

    while (current.next != None):
      current = current.next

    current.next = newLink
    newLink.next = self.first   

Delete
Delete Now:untuk menghapus elemen yang ditunjuk oleh elemen sekarang.Jika elemen utama dari link list (head) maka head akan berpindah ke elemen berikutnya.
Delete Head :untuk menghapus elemen yang di tunjuk head maka head akan berpindah ke elemen selanjutnya.
def delete(head, value):
    curr = head
    prev = curr.next
    while prev.next != head:
        prev = prev.next
    if curr.value == value:
        prev.next = curr.next curr = curr.next
    prev = prev.next
    while curr.value != value and curr != head:
        curr = curr.next
        prev = prev.next
    if curr.value == value:
        prev.next = curr.next
Search
#The structure of ListNode
class ListNode:
  def __init__(self, val):
    self.val = val
    self.next = None
# Supposes you have a circular linked list and you have a reference to head. You can do as follows to print the whole list.
current = head.next
while current != head: # stop when it comes back to head
  print current.val
  current = current.next


itulah tadi sedikit pembahasan tentang circular list semoga bermanfaat bagi kita semua

Komentar

Postingan populer dari blog ini

Perbedaan Var dengan Val di Bahasa Pemograman Kotlin

Sumber : https://www.youtube.com/watch?v=gVX1DJtL8GU        Dalam kotlin terdapat yang namanya variable sebagai cara untuk menyimpan informasi atau nilai yang akan dikelola didalam sebuah program dan sebuah variable akan membutuhkan yang kata kunci yaitu var atau val , identifier, type dan initialization tapi kali ini kita akan membahas var dan val.