Anda di halaman 1dari 19

STRUKTUR DATA 1 HUSNI MUBAROK

MANIPULASI PROGRAM DENGAN LINKED LIST

I. SINGLE LINKED LIST program singlelinkedlist; {judul program} uses wincrt; type simpul = ^data; {deklarasi simpul, Penulisan pointer simpul dengan bentuk record} data = record {record berisi field nama dan kait} nama : string[25]; {field nama bertipe string dengan maksimum 25 karakter} kait : simpul; {field kait bertipe simpul} end; var awal, akhir, bantu : simpul; {variabel awal, akhir, dan bantu bertipe simpul} ya : char; {variabel bantu untuk pemilihan case of} begin clrscr; awal := nil; {pembuatan nilai awal=nil,pd saat program pertama dijalankan} ya := y;{inisialisasi ya = karakter y} while ya in ['y','Y'] do {selama ya = y kecil atau y besar maka program akan meminta penginputan nama}

STRUKTUR DATA 2 HUSNI MUBAROK

begin new(bantu); {mengalokasikan simpul didalam memori dengan statemen new} write(masukkan nama : ); readln(bantu^.nama); {menginputkan nama} write(tambah data lagi [Y/N]: ?); readln(ya); {pemilihan untuk menambahkan data} writeln; if awal = nil then begin bantu^.kait:= nil; {proses1:proses yang dilakukan saat penginputan data yang pertama} awal := bantu; akhir := bantu; end else begin akhir^.kait := bantu; {proses2:proses penambahan data selanjutnya} bantu^.kait := nil; akhir := bantu; end; end; {proses3:proses utk menampilkan data} bantu := awal;

STRUKTUR DATA 3 HUSNI MUBAROK

writeln(bantu^.nama); while bantu^.kait <> nil do begin bantu := bantu^.kait; writeln(bantu^.nama); end; readln; end. PROGRAM TERSEBUT JIKA DIEKSEKUSI:

Program tersebut meminta penginputan data selama perintah tambah lagi di isi y/Y. kemudian data yang telah di inputkan akan di cetak kembali. Pengisian : fitri eska yuri doni stop cetak data yang diisikan II. DOUBLE LINKED LIST program doublelinkedlist; {judul program} uses wincrt; type simpul = ^data; {deklarasi simpul double linked list} data = record {record berisi field nama, depan, dan belakang} nama : string; {field nama bertipe string}

STRUKTUR DATA 4 HUSNI MUBAROK

depan, belakang : simpul; {field depan, belakang bertipe simpul} end; var awal, akhir, bantu : simpul; {variabel awal, akhir, bantu bertipe simpul} pil : char; {variabel bantu untuk melakukan pemilihan manipulasi data} procedure buatlist (var bantu : simpul); {procedure untuk menambah data} begin if awal = nil then {proses penambahan data/simpul pertama} begin awal := bantu; awal^.depan := nil; awal^.belakang := nil; akhir := awal; end else begin akhir^.depan := bantu; {proses penambahan data/simpul utk kesekiankali} bantu^.depan := nil; bantu^.belakang := akhir; akhir := bantu; end;

STRUKTUR DATA 5 HUSNI MUBAROK

end; procedure cetakawal; {procedure utk mencetak data deeri awal list} var bantu :simpul; begin writeln; writeln(********************); writeln(Cetak data dari awal); writeln(********************); bantu := awal; {perintah utk mencetak data dr awal} while bantu <> nil do begin writeln(Nama : , bantu^.nama); bantu := bantu^.depan; end; readln; end; procedure cetakakhir; {procedure untuk mencetak data dari akhir list} var bantu : simpul; begin writeln; writeln(********************); writeln(Cetak data dari akhir); writeln(********************);

STRUKTUR DATA 6 HUSNI MUBAROK

bantu := akhir; while bantu <> nil do begin {perintah utk mencetak data dari akhir} writeln(Nama : , bantu^.nama); bantu := bantu^.belakang; end; readln; end; procedure hapuslist; {procedure utk menghapus data dari awal} var bantu : simpul; begin while awal <> nil do {perintah utk menghapus data dari awal list} begin bantu := awal; awal := awal^.depan; dispose(bantu); { mengalokasikan simpul yang sudah tidak terpakai, maka digunakan statemen dispose} end; writeln(Data telah di hapus!!); readln; end; {program utama}

STRUKTUR DATA 7 HUSNI MUBAROK

begin awal := nil; repeat clrscr; writeln(Program double linked list); writeln(**************************); writeln(1. Tambah data); writeln(2. Cetak data dari awal); writeln(3. Cetak data dari akhir); writeln(4. Hapus seluruh data); writeln(5. Keluar); write(pilihan anda [1/2/3/4/5] : ); readln(pil); case pil of 1 : begin {perintah menambah data dan memanggil procedure buatlist} new(bantu); { mengalokasikan simpul didalam memori digunakan statemen new } writeln; writeln(Tambah data); write(Masukkan nama : ); readln(bantu^.nama); buatlist(bantu); {pemanggilan procedure buatlist} end;

STRUKTUR DATA 8 HUSNI MUBAROK

2 : cetakawal; {pemanggilan procedure cetakawal} 3 : cetakakhir; {pemanggilan procedure cetakakhir} 4 : hapuslist; {pemanggilan procedure hapuslist} end; until (pil>=5); readln; end. PROGRAM TERSEBUT JIKA DI EKSEKUSI: TAMBAH DATA KE 1 Pilih menu 1 FITRI

TAMBAH DATA KE 2 Pilih menu 1 ESKA

TAMBAH DATA KE 3 Pilih menu 1 DONI

STRUKTUR DATA 9 HUSNI MUBAROK

CETAK DATA DARI AWAL Input 1 : FITRI Input 2 : ESKA Input 3 : DONI Maka hasil cetak dari awal: FITRI ESKA DONI

CETAK DATA DARI AKHIR Input 1 : FITRI Input 2 : ESKA Input 3 : DONI Maka hasil cetak dari awal: DONI ESKA FITRI

STRUKTUR DATA 10 HUSNI MUBAROK

HAPUS SELURUH DATA

Maka data yang telah terisi yaitu FITRI, ESKA, DONI akan di hapus. III. PROGRAM SINGLE LINKEDLIST UNTUK TUGAS Program single_list; Uses WinCrt; Type Pointer = ^TypeData; {deklarasi type data pointer} TypeData = Record {record berisi field nama dan next} Nama : String; {field nama bertipe string} Next : Pointer; {field next bertipe pointer} End; Var {deklarasi variabel pada program utama} List : Pointer; {variabel list bertipe pointer}

STRUKTUR DATA 11 HUSNI MUBAROK

nama,nama1 : string; {variabel nama dan nama1 bertipe string} Jwb,pil : Char; {variabel bantu jwb dan pil bertipe char} x: integer; {Procedure Untuk Menambahkan Data(nama)dari Depan} Procedure TambahDataDepan(Var L : Pointer; X : string); Var Baru : Pointer; Begin New(Baru); {mengalokasikan simpul didalam memori digunakan statemen new} Baru^.Nama := X; {Proses untuk menambahkan data selanjutnya dari depan} Baru^.Next := Nil; if L = Nil then L := Baru else Begin Baru^.Next :=L; L :=Baru; End; End; {Proceedure Untuk Menambahkan data(nama) dari Belakang} Procedure TambahDataBelakang(Var L : Pointer; X : string); Var Baru,Bantu : Pointer;

STRUKTUR DATA 12 HUSNI MUBAROK

Begin New(Baru); {mengalokasikan simpul didalam memori digunakan statemen new} Baru^.Nama := X; Baru^.Next := Nil; Bantu := L; While Bantu^.Next <> Nil Do Bantu := Bantu^.Next; Bantu^.Next := Baru; End; {Procedure Untuk Menghapus Data dari Depan} Procedure HapusDepan(Var L : Pointer); Var Baru : Pointer; Begin Baru := L; if L = Nil then Writeln(List Kosong) {senarai masih kosong} else Begin L := L^.Next; {simpul pertama dihapus} dispose(Baru); { mengalokasikan simpul yang sudah tidak terpakai, maka digunakan statemen dispose } End; End;

STRUKTUR DATA 13 HUSNI MUBAROK

{Procedure Untuk Menghapus Data dari Belakang} Procedure HapusBelakang(Var L : Pointer); Var Baru,bantu : Pointer; Begin Bantu := L; {mencari simpul yang akan dihapus} if Bantu = Nil then Writeln(List Kosong) else Begin While Bantu^.Next^.Next <> nil do {simpul yang akan dihapus ketemu} Bantu := Bantu^.next; {simpul terakkir dihapus} New(Baru); {mengalokasikan simpul didalam memori digunakan statemen new} Baru := Bantu^.Next; Bantu^.Next:=nil; dispose(Baru); { mengalokasikan simpul yang sudah tidak terpakai, maka digunakan statemen dispose } End; End; {Procedure Untuk Mencetak Data yang Telah Di inputkan} Procedure Cetak(L : Pointer); Var Bantu : Pointer; Begin

STRUKTUR DATA 14 HUSNI MUBAROK

Bantu := L; {inisialisasi Bantu = list} While Bantu <> Nil Do Begin Write(Bantu^.nama); Bantu:=Bantu^.Next; End; End; {Program Utama} Begin New(List); {mengalokasikan simpul didalam memori digunakan statemen new} List:=nil; {Pembuatan nilai List=nil, pada saat program pertama dijalankan} Jwb := Y; Writeln(MEMASUKKAN DATA); Write(Masukkan Nama : ); Readln(nama); {proses yang dilakukan saat penginputan data yang pertama} TambahDataDepan(List,nama); writeln; clrscr; x:=0; {inisialisasi variabel n dengan nilai 0} repeat clrscr; writeln(**************************); writeln(*******MENU PILIHAN*******);

STRUKTUR DATA 15 HUSNI MUBAROK

writeln(**************************); writeln; writeln(1. Tambah Data Dari Depan); writeln(2. Tambah Data Dari Belakang); writeln(3. Hapus Data Depan ); writeln(4. Hapus Data Belakang ); writeln(5. Cetak Data ); writeln(0. Selesai); writeln; write(Pilihan Anda : ); readln(pil); writeln; case pil of 1 : Begin jwb := Y; Writeln(TAMBAH DATA DARI DEPAN); While UpCase(jwb)=Y Do Begin Write(Masukkan Nama : ); Readln(nama); TambahDataDepan(List,nama); {memanggil procedure TambahDataDepan} Write(Ingin menambah data lagi? [Y/T] );Readln(jwb); End; Cetak(List); {memanggil procedure cetak} Writeln; readln;

STRUKTUR DATA 16 HUSNI MUBAROK

End; 2 : Begin jwb := Y; Writeln(TAMBAH DATA DARI BELAKANG); While UpCase(jwb)=Y Do Begin Write(Masukkan Nama : ); Readln(nama); TambahDataBelakang(List,nama); {memanggil procedure TambahDataBelakang} Write(Ingin menambah data lagi? [Y/T] );Readln(jwb); End; Cetak(List); {memanggil procedure cetak} writeln; readln; End; 3 : Begin Writeln(HAPUS DEPAN ); HapusDepan(List); {memanggil procedure HapusDepan} Cetak(List); {memanggil procedure cetak} Writeln; readln; end; 4 : Begin Writeln(HAPUS BELAKANG); HapusBelakang(List);

STRUKTUR DATA 17 HUSNI MUBAROK

{memanggil procedure HapusBelakang} Cetak(List); {memanggil procedure cetak} Writeln; readln; end; 5 : begin cetak(list); {memanggil procedure cetak} writeln; readln; end; 0: writeln(Program selesai, Silahkan kembali ke MENU!); else writeln; writeln(Pilih sesuai MENU yang tersedia!); readln; end; until pil=5; readln; end. PROGRAM TERSEBUT JIKA DI EKSEKUSI: Input data awal

TAMBAH DATA:

STRUKTUR DATA 18 HUSNI MUBAROK

ESKA SISI RUDI STOP TAMBAH DATA DARI BELAKANG

ULIN HANA FADEL STOP HAPUS DATA DARI DEPAN

STRUKTUR DATA 19 HUSNI MUBAROK

HAPUS DATA DARI BELAKANG

CETAK DATA AKHIR

Anda mungkin juga menyukai