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