Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

class 

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

-------------> Daftar Menu <-------------

1. Tambah data pegawai baru (preepend)


2. Tampil Seluruh data pegawai baru
3. Ubah data pegawai
4. Hapus data pegawai
5. Keluar perogram

Masukkan pilihan anda : 1


Tambahkan data dengan format (no,nama,usia,posisi) : 001, Amelia jhonston, 30, progr

----> Selamat data baru sudah di tambahkan <----


-------------> Daftar Menu <-------------

1. Tambah data pegawai baru (preepend)


2. Tampil Seluruh data pegawai baru
3. Ubah data pegawai
4. Hapus data pegawai
5. Keluar perogram

Masukkan pilihan anda : 2

-------> Daftar info pegawai dalam Doubly Linked List <--------


No. Pegawai : 001
Nama : Amelia jhonston
Usia : 30
Jabatan : programmer
-----------------------------------------------------------------

-------> Daftar info pegawai dalam Doubly Linked List <--------


No. Pegawai : 003
Nama : Billy watson
Usia : 28
Jabatan : Analyst
-----------------------------------------------------------------

-------------> Daftar Menu <-------------

1. Tambah data pegawai baru (preepend)


2. Tampil Seluruh data pegawai baru
3. Ubah data pegawai
4. Hapus data pegawai
5. Keluar perogram

Masukkan pilihan anda : 3


masukkan index yang mau di ubah : 001
masukkan nomor yang mau di masukkan : 002
masukkan nama pegawai baru : jackson scoot
masukkan usia pegawai baru : 24
masukkan posisi pegawai baru : QA staff

----> Selamat data sudah di ubah <----

-------------> Daftar Menu <-------------

1 Tambah data pegawai baru (preepend)


check 2m 44s completed at 2:18 PM
class 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
Usia : 28
Jabatan : Analyst
-----------------------------------------------------------------

-------------> Daftar Menu <-------------

1. Tambah data pegawai baru (preepend)


2. Tampil Seluruh data pegawai baru
3. Ubah data pegawai
4. Hapus data pegawai
5. Keluar perogram

Masukkan pilihan anda : 3


masukkan index yang mau di ubah : 001
masukkan nomor yang mau di masukkan : 002
masukkan nama pegawai baru : jackson scoot
masukkan usia pegawai baru : 24
masukkan posisi pegawai baru : QA staff

----> Selamat data sudah di ubah <----

-------------> Daftar Menu <-------------

1. Tambah data pegawai baru (preepend)


2. Tampil Seluruh data pegawai baru
3. Ubah data pegawai
4. Hapus data pegawai
5. Keluar perogram

Masukkan pilihan anda : 4


Masukkan index yang anda mau hapus : 001

----> Selamat data sudah di hapus <----

-------------> Daftar Menu <-------------

1. Tambah data pegawai baru (preepend)


2. Tampil Seluruh data pegawai baru
3. Ubah data pegawai
4. Hapus data pegawai
5. Keluar perogram

Masukkan pilihan anda : 5


perogram end bye ^ ^
check 2m 44s completed at 2:18 PM

You might also like