Sabtu, 25 Desember 2010

Program Linked List

Disini saya akan memberikan listing program penghapusan linked list yang diketahui lokasinya jika ruang bebas (avail) tersebut terurut dengan menggunakkan bahasa pemrograman pascal. Perogram ini dibuat terkait dengan mata kuliah struktur data.
LISTING PROGRAM
program link_list;
uses crt;
const
MAX = 1000;
var
simpul,i,j,chk,counter,avail,avail2,start,pil,ruang,x,t,nos,temp : integer;
hapus : char;
info:array [0..MAX] of integer;
next:array [0..MAX] of integer;
procedure check;
begin
x:=0;
counter:=0;
avail:=0;
while counter <= ruang do
begin
counter:=counter+1;
if info[counter] <> 0 then
begin
x:=x+1;
end
else
begin
avail:=avail+1;
end;
end;
avail2:=1;
while info[avail2] <> 0 do
begin
avail2:=avail2+1;
end;
end;
procedure insert;
label 10,20;
begin
clrscr;
for i:= 1 to simpul do
begin
20:
write(‘Masukkan Nomor Simpul yang akan diisi : ‘);
readln(x);
if info[x] <> 0 then
begin
writeln(‘Simpul Sudah Terisi !’);
goto 20;
end
else if x > ruang then
begin
writeln(‘Simpul Tidak Tersedia !’);
goto 20;
end;
write(‘Masukkan Info Simpul ke ‘,x,’ : ‘);
readln(info[x]);
10:
write(‘Masukkan next ‘,x,’ : ‘);
readln(chk);
if (next[chk] = x) or (chk=x) then
begin
writeln(‘Input Salah !’);
goto 10;
end
else
begin
next[x]:=chk;
end;
end;
end;
procedure tampil;
begin
writeln(‘Linked List ‘);
writeln;
check;
if x = 0 then
begin
writeln(‘Linked List Hampa !’);
end
else
begin
i := start;
write(‘|’,start,’|');
while info[i] <> 0 do
begin
write(‘->|’,info[i],’|',next[i],’|');
i:=next[i];
end;
end;
writeln;
end;
procedure bebas;
begin
writeln(‘Avail List ‘);
writeln;
if avail2 > ruang then
begin
writeln(‘Ruang Penuh !’);
end
else
begin
write(‘|’,avail2,’|');
for i := 1 to ruang do
begin
if info[i] = 0 then
begin
t:=i+1;
while info[t] <> 0 do
begin
t:=t+1;
end;
if t <= ruang then
begin
next[i]:=t;
end
else
begin
next[i]:=0;
end;
write(‘->|’,info[i],’|',next[i],’|');
end;
end;
end;
end;
procedure tabel;
begin
clrscr;
writeln(‘ | info | next |’);
for i := 1 to ruang do
begin
if info[i] = 0 then
begin
t:=i+1;
while info[t] <> 0 do
begin
t:=t+1;
end;
if t <= ruang then
begin
next[i]:=t;
end
else
begin
next[i]:=0;
end;
end;
writeln(i,’|',info[i],’ |’,next[i],’ |’);
end;
end;
procedure delete;
label ulangi;
var
loc:integer;
begin
check;
if x = 0 then
begin
gotoxy(33,21); writeln(‘Linked List Hampa !’);
readkey;
end
else
begin
ulangi:
gotoxy(22,21); write(‘Masukkan Lokasi Yang Akan Dihapus : ‘);readln(loc);
if info[loc] = 0 then
begin
gotoxy(33,23);writeln(‘Lokasi Salah !’);
goto ulangi;
end;
counter:=1;
while next[counter] <> loc do
begin
counter:=counter+1;
end;
if start = loc then start:=next[loc];
next[counter]:=next[loc];
next[loc]:=0;
info[loc]:=0;
end;
end;
begin
clrscr;
gotoxy(36,6); writeln(‘KELOMPOK 6 ‘);
gotoxy(20,8); writeln(‘PENGHAPUSAN SIMPUL YANG DIKETAHUI LOKASINYA’);
gotoxy(34,10); writeln(‘ FAHMY NUGRAHA ‘);
gotoxy(34,11); writeln(‘ HERI SANTOSO’);
gotoxy(33,12); writeln(‘YUSTI FITRIYANI NAMPIRA ‘);
gotoxy(25,17); write(‘Masukkan Banyak Ruang Linklist : ‘);readln(ruang);
clrscr;
while pil <> 5 do
begin
clrscr;
gotoxy(20,5); writeln(‘=========================================’);
gotoxy(33,6); writeln(‘MENU LINKLIST’);
gotoxy(20,7); writeln(‘=========================================’);
gotoxy(28,9); writeln(’1. Input ‘);
gotoxy(28,10); writeln(’2. Cetak ‘);
gotoxy(28,11); writeln(’3. Hapus Simpul’);
gotoxy(28,12); writeln(’4. Hapus Semua Isi Simpul ‘);
gotoxy(28,13); writeln(’5. Exit ‘);
gotoxy(20,15); writeln(‘=========================================’);
gotoxy(28,19); write(‘Masukkan Pilihan Anda : ‘); readln(pil);
case pil of
1 : begin
clrscr;
gotoxy(18,8); write(‘Masukkan Banyak Simpul yang akan di Input : ‘);readln(simpul);
check;
if simpul > ruang then
begin
gotoxy(18,10); writeln(‘Error ! Melebihi batas ruang !’);
readkey;
end
else if simpul > avail then
begin
gotoxy(18,10); writeln(‘Error ! Avail Tidak Cukup !’);
readkey;
end
else
begin
insert;
end;
end;
2: begin
gotoxy(33,21);write(‘Masukkan START : ‘);
readln(start);
tabel;
writeln;
tampil;
writeln;
bebas;
readkey;
end;
3: begin
delete;
clrscr;
writeln(‘Setelah Penghapusan !’);
writeln;
writeln;
tampil;
writeln;
bebas;
readkey;
end;
4: begin
gotoxy(26,21);write(‘Hapus semua simpul ? (Y/N) : ‘);
readln(hapus);
if ( hapus=’y') or (hapus=’Y') then
begin
for i:= 1 to ruang do
begin
info[i] := 0;
next[i] := 0;
end;
gotoxy(29,23);writeln(‘Semua simpul TERHAPUS ‘);
readkey;
end;
end;
end;
end;
end.
Berikut ini adalah output dari program penghapusan linked list yang diketahui lokasinya jika ruang bebas (avail) terurut.
Output program
Pada Awal program, saya akan menampilkan judul dan nama pembuat program. Kemudian kita di haruskan memasukan banyaknya ruang link list tersebut, dan pada contoh ini kita akan memasukan banyak ruang tersebut adalah 7.
output1
Lalu jika kita telah menginput banyaknya ruang, maka program akan menampilkan menu linked list tersebut. Kita dapat memilih salah satu menu yang terdapat pada linked list tersebut. Tapi terlebih dahulu kita harus memasukkan datanya ke dalam linked list, karena data defalut yang ada pada linked list tersebut masih 0. Jika kita ingin memasukkan data, maka kita bisa memilih menu linked nomor 1.
output 2
Setelah kita memasuki menu input, maka program berlanjut untuk menanyakan banyaknya simpul yang akan di input. Disini akan menentukan banyaknya linked list yang akan terisi. Pada contoh ini saya mengisikan banyaknya simpul adalah 4.
output 3
Selanjutnya kita akan masukan nomor simpul yang akan diisi dan memasukan informasi dari simpul tersebut. Kita juga aka memasukan next dari simpul tersebut yang digunakan untuk menunjukan arah simpul berikutnya. Disini kita akan melakukan pengisian data sebanyak 4 kali sesuai banyaknya simpul yang td telah kita tentukan.
output 4
Kemudian program akan kembali ke menu utama setelah kita memasukan data-data tersebut. Kita akan memilih menu 2 untuk mencetak data yang telah kita input sebelumnya, dan setelah kita memilih menu cetak maka sebelum itu kita di haruskan mengiput dulu start dari linked list tersebut. Start digunakan untuk menentukan simpul pertama yang ada pada linked list tersebut.
output 5
Kemudian program akan menampilkan data-data yang telah kita masukan sebelumnya. Data akan tersusun sesuai linked list yang telah kita tentukan, tapi pada ruang bebas (avail) tersebut akan tercetak terurut dari angka terkecil.
output 6
Kemudian setelah program menampilkan data yang telah kita input, maka program akan kembal i ke menu utama. Langkah selanjutnya adalah menghapus simpul yang ada pada linked list dengan memilih menu 3. Lalu setelah memilih menu 3, program akan menanyakan lokasi simpul mana yang akan dihapus. Pada contoh program ini kita menghapus lokasi simpul 3.
output 7
Kemudian program ini akan menampilkan linked list setelah proses penghapusan lokasi tersebut. Simpul yang terhapus tersebut akan masuk ke ruang bebas (avail) dan avail tersebut akan tersusun secara terurut.
output 8
Kemudian jika kita ingin menghapus semua isi simpul yang ada pada linked list tersebut kita dapat memilih menu 4 yang berarti akan menghapus semua data yang telah kita masukkan. Lalu kita dapat memasukkan kembali data baru yang kita inginkan dengan mengulang langkah-langkah diatas.
output 9
Selanjutnya untuk exit dan keluar dari program ini, kita dapat memilih menu 5.
output 10

Tidak ada komentar: