Minggu, 01 Juli 2018

Single Link List


 Linked list
Linked list merupakan sebuah data yang saling berkaitan satu sama lain. Sehingga dapat kita analaogikan sebagai tali yang memiliki sebuah data.
Single Linked List merupakan sebuah tempat yang disediakan pada satu area memori tertentu untuk menyimpan data yang dikenal dengan sebutan node atau simpul. Setiap node memiliki pointer yang menunjuk ke simpul berikutnya sehingga terbentuk satu untaian, dengan demikian hanya diperlukan sebuah variabel pointer. Susunan berupa untaian semacam ini disebut Single Linked List. Biasanya Linked List pada node terakhir akan menunjuk ke NULL, dimana  NULL memilik nilai khusus yang artinya tidak menunjuk ke mana-mana.

Pembuatan Single Linked List dapat menggunakan 2 metode:
– LIFO (Last In First Out), aplikasinya : Stack (Tumpukan)
– FIFO (First In First Out), aplikasinya : Queue (Antrean)


Kode Program:
#Ordered List mengurutkan data dari terkecil ke terbesar
class Node:
  def __init__(self,initdata):
    self.data = initdata
    self.next = None
  def getData(self):
    return self.data
  def getNext(self):
    return self.next
  def setData(self,newdata):
    self.data = newdata
  def setNext(self,newnext):
    self.next = newnext

   
class OrderedList:
    def __init__(self):
        self.head = None

    def search(self,item):
        current = self.head
        found = False
        stop = False
        while current != None and not found and not stop:
            if current.getData() == item:
                found = True
            else:
                if current.getData() > item:
                    stop = True
                else:
                    current = current.getNext()

        return found

    def add(self,item):
        current = self.head
        previous = None
        stop = False
        while current != None and not stop:
            if current.getData() < item:
                stop = True
            else:
                previous = current
                current = current.getNext()

        temp = Node(item)
        if previous == None:
            temp.setNext(self.head)
            self.head = temp
        else:
            temp.setNext(current)
            previous.setNext(temp)

    def isEmpty(self):
        return self.head == None

    def size(self):
        current = self.head
        count = 0
        while current != None:
            count = count + 1
            current = current.getNext()
        return count
     
    def remove(self,item):
        if self.size() != 0:
          current = self.head
          previous = None
          found = False
          while not found and current != None:
              if current.getData() == item:
                  found = True
                  print('Data %s telah dihapus'%item)
              else:
                  previous = current
                  current = current.getNext()
     
          if previous == None:
              self.head = current.getNext()
          else:
              if current != None:
                  previous.setNext(current.getNext())
          if current is None:
            print('Data %s yang dihapus tidak ada di List'%item)
        else:
          print('List sudah Kosong')
     
    def show(self):
        current = self.head
        print('Head',end="->"),
        while current != None:
            print (current.getData(),end= "-> "),
            current= current.getNext()
        print (None)

mylist = OrderedList()
print('==================Program Linked List (Ordered List)==============')
mylist.add(31)
mylist.add(32)
mylist.add(77)
mylist.add(15)
mylist.add(13)
mylist.show()

print(mylist.remove(31))
mylist.show()

print(mylist.search(30))
mylist.show()


Tidak ada komentar:

Posting Komentar