Professional Documents
Culture Documents
Untitled
Untitled
Node:
def __init__(self,nomor_pegawai,nama_pegawai,usia,posisi):
self.nomor_pegawai = nomor_pegawai
self.nama_pegawai = nama_pegawai
self.usia = usia
self.posisi = posisi
self.next = None
self.prev = None
class doublylinkedlist:
def __init__(self,nomor_pegawai,nama_pegawai,usia,posisi):
newnode = Node(nomor_pegawai,nama_pegawai,usia,posisi)
self.head = newnode
self.tail = newnode
self.length = 1
def print_pegawai(self):
temp = self.head
while temp is not None:
print("\n-------> Daftar info pegawai dalam Doubly Linked List <--------")
print('No. Pegawai : ',(temp.nomor_pegawai))
print('Nama : ',(temp.nama_pegawai))
print('Usia : ',(temp.usia))
print('Jabatan : ',(temp.posisi))
print("-----------------------------------------------------------------")
temp = temp.next
def append(self,nomor_pegawai,nama_pegawai,usia,posisi):
new_node = Node(nomor_pegawai,nama_pegawai,usia,posisi)
if self.head is None:
self.head = new_node
self.tail = new_node
else:
self.tail.next = new_node
new_node.prev = self.tail
self.tail = new_node
self.length += 1
return True
def pop(self):
if self.length == 0:
return None
temp = self.tail
if self.length == 1:
self.head = None
self.tail = None
else:
self.tail = self.tail.prev
self.tail.next = None
temp.prev = None
self.length -= 1
return temp
def prepend(self,nomor_pegawai,nama_pegawai,usia,posisi):
new_node = Node(nomor_pegawai,nama_pegawai,usia,posisi)
if self length == 0:
if self.length == 0:
self.head = new_node
self.tail = new_node
else:
new_node.next = self.head
self.head.prev = new_node
self.head = new_node
self.length +=1
return True
def pop_first(self):
if self.length ==0:
return None
temp = self.head
if self.length ==1:
self.head = None
self.tail = None
else:
self.head = self.head.next
self.head.prev = None
temp.next = None
self.length -=1
return temp
def get(self,index):
if index < 0 or index >= self.length:
return None
temp = self.head
if index < self.length/2:
for _ in range(index):
temp = temp.next
else:
temp = self.tail
for _ in range(self.length - 1, index, - 1):
temp = temp.prev
return temp
def set_value(self,index,value1,value2,value3,value4):
temp = self.get(index)
if temp is not None:
temp.nomor_pegawai = value1
temp.nama_pegawai = value2
temp.usia = value3
temp.posisi = value4
return True
return False
def hapus_data_index(self, index):
if self.head is None:
return
temp = self.head
if index == 0:
self.head = temp.next
if self.head is not None:
self.head.prev = None
return
for i in range(index):
if temp is None:
return
return
temp = temp.next
if temp is None:
return
if temp.next is not None:
temp.next.prev = temp.prev
temp.prev.next = temp.next
dl=doublylinkedlist('003','Billy watson',28,'Analyst')
while True:
print("\n-------------> Daftar Menu <-------------")
print("""
1. Tambah data pegawai baru (preepend)
2. Tampil Seluruh data pegawai baru
3. Ubah data pegawai
4. Hapus data pegawai
5. Keluar perogram""")
pilihan = int(input("\nMasukkan pilihan anda : "))
if pilihan ==1:
tambahdata = input("Tambahkan data dengan format (no,nama,usia,posisi) : ").split
dl.prepend(tambahdata[0],tambahdata[1],tambahdata[2],tambahdata[3])
print("\n ----> Selamat data baru sudah di tambahkan <----")
if pilihan ==2:
dl.print_pegawai()
if pilihan ==3:
index =int(input("masukkan index yang mau di ubah : "))
value1 =input("masukkan nomor yang mau di masukkan : ")
value2 = input("masukkan nama pegawai baru : ")
value3 = input("masukkan usia pegawai baru : ")
value4 = input("masukkan posisi pegawai baru : ")
dl.set_value(index,value1,value2,value3,value4)
print("\n ----> Selamat data sudah di ubah <----")
if pilihan ==4:
i=int(input("Masukkan index yang anda mau hapus : "))
dl.hapus_data_index(i)
print("\n ----> Selamat data sudah di hapus <----")
if pilihan ==5:
print("perogram end bye ^_^")
break
class doublylinkedlist:
def __init__(self,nomor_pegawai,nama_pegawai,usia,posisi):
newnode = Node(nomor_pegawai,nama_pegawai,usia,posisi)
self.head = newnode
self.tail = newnode
self.length = 1
def print_pegawai(self):
temp = self.head
while temp is not None:
print("\n-------> Daftar info pegawai dalam Doubly Linked List <--------")
print('No. Pegawai : ',(temp.nomor_pegawai))
print('Nama : ',(temp.nama_pegawai))
print('Usia : ',(temp.usia))
print('Jabatan : ',(temp.posisi))
print("-----------------------------------------------------------------")
temp = temp.next
def append(self,nomor_pegawai,nama_pegawai,usia,posisi):
new_node = Node(nomor_pegawai,nama_pegawai,usia,posisi)
if self.head is None:
self.head = new_node
self.tail = new_node
else:
self.tail.next = new_node
new_node.prev = self.tail
self.tail = new_node
self.length += 1
return True
def pop(self):
if self.length == 0:
return None
temp = self.tail
if self.length == 1:
self.head = None
self.tail = None
else:
self.tail = self.tail.prev
self.tail.next = None
temp.prev = None
self.length -= 1
return temp
def prepend(self,nomor_pegawai,nama_pegawai,usia,posisi):
new_node = Node(nomor_pegawai,nama_pegawai,usia,posisi)
if self length == 0:
if self.length == 0:
self.head = new_node
self.tail = new_node
else:
new_node.next = self.head
self.head.prev = new_node
self.head = new_node
self.length +=1
return True
def pop_first(self):
if self.length ==0:
return None
temp = self.head
if self.length ==1:
self.head = None
self.tail = None
else:
self.head = self.head.next
self.head.prev = None
temp.next = None
self.length -=1
return temp
def get(self,index):
if index < 0 or index >= self.length:
return None
temp = self.head
if index < self.length/2:
for _ in range(index):
temp = temp.next
else:
temp = self.tail
for _ in range(self.length - 1, index, - 1):
temp = temp.prev
return temp
def set_value(self,index,value1,value2,value3,value4):
temp = self.get(index)
if temp is not None:
temp.nomor_pegawai = value1
temp.nama_pegawai = value2
temp.usia = value3
temp.posisi = value4
return True
return False
def hapus_data_index(self, index):
if self.head is None:
return
temp = self.head
if index == 0:
self.head = temp.next
if self.head is not None:
self.head.prev = None
return
for i in range(index):
if temp is None:
return
return
temp = temp.next
if temp is None:
return
if temp.next is not None:
temp.next.prev = temp.prev
temp.prev.next = temp.next
dl=doublylinkedlist('003','Billy watson',28,'Analyst')
while True:
print("\n-------------> Daftar Menu <-------------")
print("""
1. Tambah data pegawai baru (preepend)
2. Tampil Seluruh data pegawai baru
3. Ubah data pegawai
4. Hapus data pegawai
5. Keluar perogram""")
pilihan = int(input("\nMasukkan pilihan anda : "))
if pilihan ==1:
tambahdata = input("Tambahkan data dengan format (no,nama,usia,posisi) : ").split
dl.prepend(tambahdata[0],tambahdata[1],tambahdata[2],tambahdata[3])
print("\n ----> Selamat data baru sudah di tambahkan <----")
if pilihan ==2:
dl.print_pegawai()
if pilihan ==3:
index =int(input("masukkan index yang mau di ubah : "))
value1 =input("masukkan nomor yang mau di masukkan : ")
value2 = input("masukkan nama pegawai baru : ")
value3 = input("masukkan usia pegawai baru : ")
value4 = input("masukkan posisi pegawai baru : ")
dl.set_value(index,value1,value2,value3,value4)
print("\n ----> Selamat data sudah di ubah <----")
if pilihan ==4:
i=int(input("Masukkan index yang anda mau hapus : "))
dl.hapus_data_index(i)
print("\n ----> Selamat data sudah di hapus <----")
if pilihan ==5:
print("perogram end bye ^_^")
break
Usia : 28
Jabatan : Analyst
-----------------------------------------------------------------