Facebook SDK

 LINKED LIST


            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)

ada 4 metode saja di dalam class Node yaitu :
Ø  getData() digunakan untuk mendapatkan atau mengetahui sebuah nilai yang terdapat didalam setiap node.
Ø  getNext() metode yang satu ini digunakan untuk mengetahui nilai yang berada di depannya.
Ø  setData() ini digunakan untuk mengganti nilai yang terkandung di dalam sebuah list.
Ø  setNext() merupakan metode yang digunakan untuk mengatur atau mendeklarasikan data yang ada di depannya.

            Namun penggunaan class tersebut masih kurang efektif dan kurang enak untuk digunakan. Jadi, terdapat class tambahan yang bisa digunakan untuk mebuatnya semakin nyaman dan lebih mudah dipahami, class tersebut bernama ordered list dan un ordered list. Perbedaan dari kedua list tersebut hanya terdapat pada pengurutan datanya. Jadi, ordered list ini datanya akan selalu di urut mulai dari yang besar menuju yang kecil. Jadi ini diperuntukkan bagi item yang menggunakan angka. dan untuk unordered list list atau data yang dimasukkan kedalam list, tidak akan diurut, nah untuk penggunaan dalam rangka mempermudah ini, saya akan menggunakan unordered list karena, list ini bisa digunakan untuk menambahkan tipe data apa saja. Seperti integer dan string. Jadi akan memudah kan kalian dalam menggunakan class ini nantinya, nah class dari unordered list ini memiliki 5 buah metode untuk memberikan kalian kemudahan dalam menggunakan linked list, nah 5 buah metode dapat Anda lihat di bawah ini.

UnOrderedList() membuat suatu list baru yang kosong. Tidak memerlukan parameter dan mengembalikan suatu list kosong. 
·         add(item) menambahkan suatu item baru ke dalam list. Diperlukan item yang akan ditambahkan dan tidak mengembalikan apapun. Anggapan: item tersebut belum ada dalam list.
·         remove(item) menghapus item dari dalam list. Diperlukan item dan akan mengubah list. Anggapan: item tersebut tersedia di dalam list.
·         search(item) mencari item di dalam list. Perlu item dan mengembalikan suatu nilai boolean. 
·         isEmpty() menguji untuk melihat apakah list dalam keadaan kosong (empty). Tidak memerlukan parameter dan mengembalikan suatu nilai boolean.
·         size() mengembalikan jumlah item di dalam list. Tidak memerlukan parametyer dan mengembalikan suatu integer

Berikut Source code untuk contoh Unorderedlist :

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 Unorderedlist:
    def __init__(self):
        self.head = None
    def show(self):
        current = self.head
        print('Head ->', end='')
        while current != None:
            print(current.getData(), end = '->')
            current = current.getNext()
        print('None')
    def isEmpty(self):
        return self.head == None
    def add(self, item):
        temp = Node(item)
        temp.setNext(self.head)
        self.head = temp
    def size(self):
        current = self.head
        count = 0
        while current != None:
            count += 1
            current = current.getNext()
        return count
    def search(self,item):
        current = self.head
        found = False
        while current != None and not found:
            if current.getData() == item:
                found = True
            else:
                current = current.getNext()
        return found
    def remove(self,item):
        current = self.head
        previous = None
        found = False
        while not found:
            if current.getData() == item:
                found = True
            else:
                previous = current
                current = current.getNext()

        if previous == None:
            self.head = current.getNext()
        else:
            previous.setNext(current.getNext())

mylist = Unorderedlist()
mylist.add(31)
mylist.add(20)
mylist.add(41)

mylist.show()

Post a Comment

Previous Post Next Post