Rabu, 24 September 2008

Tugas Struktur Data

1.      Buat struktur data PEGAWAI untuk menggambarkan list berkait dengan dua pointer      dan dua  kepala (KEPALA & EKOR)!
2.      Dari struktur data pada nomor 1, buat algoritma untuk:
a.       penambahan simpul data pegawai pada list berkait dengan kondisi terurut dari kecil ke besar berdasarkan NIP
b.      menghapus simpul yang berisi data NAMA X pada list tersebut!
3.   Buatlah algoritma untuk menampilkan semua isi list!
Jawab:
     

    1) 2 pointer 2 kepala
              Head                                                           Tail

2a & 2b) Kamus Global
            Tipe List=^Data
            Data=Record
            No_Peg: Integer
            Nama_Peg: String
           
            Kd_Peg: Integer
            Kanan: List
            Kiri: List
End Record

New^Head
New^Baru
New^Tail

Cari_Kode: Integer
Kode: Integer
Kode_Hapus: Integer
Nama: String                                                                                                                                                                                                                                                                                                                                
Nama_Hapus: String
Pilih: Karakter
Konfirmasi: Karakter

            Program Utama
            Input Pilih
            Depend On (Pilih)
            Pilih=1: Repeat
                                    Input No
                                    Input Kode
                                    Input Nama
                                    Tambah(^Head,^Tail, No, Kode, Nama)
                                    Input Konfirmasi
                            Until (Konfirmasi<>’Y’)

            Pilih=2: Input Nama_Hapus 
                          Hapus(^Head, ^Tail, Baru, Kode_Hapus)

            Pilih=3: Input Cari_Kode
                          Cari(^Head, ^Tail, ^Baru, Cari_Kode)

            Pilih=4: Baca(^Head, ^Tail, ^Baru, Cari_Kode)
            End Depend On

            Penambahan List Dengan Data Langsung Diurutkan berdasarkan NIP.
            Procedur Tambah(Head: List, Kode: Integer, Nama: String)
           
            Kamus Lokal:
            New^Bantu
            New^Baru
            Algoritma:
            New (Baru)
            Kd_Peg^Baru← Kode
            Nama_Peg^Baru←Nama
            If Head=Tail then
                        Kiri^Baru←Kanan^Head
                        Kanan^Baru←Kiri^Tail
                        Kanan^Head←Baru
                        Kiri^Tail←Baru
            Else
                        If Kd_Peg^Baru<Kd_Peg^(Kanan^Head) then
                                    Kanan^Baru<Kanan^Head
                                    Kiri^Baru←Head
                                    Kanan^Head←Baru
                                    Kiri^(Kanan^Head) Baru
                        Else                                                                                                     
                                    If (Kd_Peg^(Kanan^Kiri^Tail)))<Kd_Peg^Bantu then
                                             Kanan^(Kiri^Tail)←Baru
                                             Kiri^Baru←Kiri^Tail
                                             Kiri^Tail←Baru
                        Else
                                             Bantu←Kanan^Head
                                             While (Kd_Peg^Baru<Kd_Peg^Bantu) do
                                                            Bantu←Kanan^Bantu
                                             End While
                                             Kiri^Baru←Kiri^Bantu
                                             Kanan^Baru←Bantu
                                             Kanan^(Kiri^Bantu) ←Baru
                                             Kiri^Bantu←Baru
                        End If
            End If
End If
             
              Procedure Hapus (Head: List, Tail: List, Baru: List, Kode_Hapus: Integer)

              Kamus Lokal:
              New^Hapus

               Algoritma:
               Hapus←Kanan^Head
               While (Nama_Hapus <> Kd_Peg^Hapus) and (Kanan^Hapus <> Nill)do
                            Hapus←Kanan^Hapus
                End While
                 If Kd_Peg^Hapus <> Kode_Hapus then
                            Output “Kode tidak ada”
                 Else
                        If (Hapus=Kanan^Head) then
                                    Kanan^Head←Kanan^Hapus
                        Else
                                    If (Kanan^Hapus=Tail) then
                                             Kiri^Tail←Kiri^Hapus
                                             Kanan^(Kiri^Hapus)←Nill
                                    Else
                                             Kiri^(Kanan^Hapus)←Kiri^hapus
                                             Kanan^(Kiri^Hapus)←Kanan^Hapus
                                    End If
                        End If
            End If

                       
                  3. Procedur Baca (Head: List, Tail: List, Baru: List)
                            Kamus Lokal:
                             New^Keluaran
                            
                              Algoritma
                              Keluaran←Head
                               While (Keluaran != Nill) do
                                             Output Kd_peg^Keluaran
                                             Output Nama_Peg^Keluaran
                                             Output Nip_Peg^Keluaran

                                End While

0 komentar:

Posting Komentar

Related Posts Plugin for WordPress, Blogger...