Sesuai dengan judulnya, program kali ini adalah program Linked List tidak terurut disertai perintah/ menu penyisipan simpul baru yang diketahui lokasinya. Program ini dibuat menggunakan bahasa pemrograman PASCAL.
Source Code-nya adalah :
program link_list;
uses crt;
const
MAX = 1000;
var
simpul,i,chk,start,pil,ruang,x,t,nos,temp : integer;
info:array [0..MAX] of integer;
next:array [0..MAX] of integer;
procedure check;
begin
x:=1;
while info[x] <> 0 do
begin
x:=x+1;
end;
end;
procedure insert;
label 10,20;
begin
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;
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;
i := start;
write('|',start,'|-');
if next[i] = 0 then
begin
write('|',info[i],'|',next[i],'|');
end;
while next[i] <> 0 do
begin
write('|',info[i],'|',next[i],'|-');
i:=next[i];
if next[i] = 0 then
begin
writeln('|',info[i],'|',next[i],'|');
end;
end;
end;
procedure avail;
begin
writeln('Avail List ');
writeln;
check;
if x > ruang then x:=0;
write('|',x,'|');
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;
procedure sisip;
label ulangi;
var
loc:integer;
begin
check;
if x = (ruang +1) then
begin
writeln('Ruang Sudah Penuh !');
readkey;
end
else
begin
ulangi:
write('Masukkan Lokasi : ');readln(loc);
if info[loc] = 0 then
begin
writeln('Lokasi Salah !');
goto ulangi;
end;
write('Masukkan Data : ');readln(info[x]);
temp := next[loc];
next[loc] := x;
next[x]:=temp;
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;
begin
clrscr;
write('Masukkan Banyak Ruang : ');readln(ruang);
clrscr;
while pil <> 4 do
begin
clrscr;
writeln('Menu ');
writeln('1.Input ');
writeln('2.Cetak ');
writeln('3.Sisip ');
writeln('4.Exit ');
write('Masukkan Pilihan Anda : '); readln(pil);
case pil of
1 : begin
write('Masukkan Banyak Simpul yang akan di Input : ');readln(simpul);
if simpul > ruang then
begin
writeln('Error ! Melebihi batas ruang !');
readkey;
end
else
begin
insert;
end;
end;
2: begin
write('Masukkan START : ');
readln(start);
tabel;
writeln;
tampil;
writeln;
avail;
readkey;
end;
3: begin
sisip;
end;
end;
end;
end.
Kira - kira seperti itulah source code dari program ini. Untuk melihat lebih jelas source code di atas, kamu bisa LIHAT DI SINI.
-----------------Test Run Program-------------------
Misalnya kita mempunyai 4 buah data yaitu,
- 75 dengan next 3
- 60 dengan next 4
- 80 dengan next 2
- 90 dengan next 0 ( akhir dari linked list )
Maka, hasil cetakan dari program adalah sebagai berikut :
NOTE : START dari 1.
Kemudian, bila kita sisipkan nilai 65 pada lokasi ke 3 maka tampilannya adalah :
-----------------End Test Run Program-------------------
Program ini masih memiliki banyak kekurangan yang belum kami ketahui. Sejauh ini, kesalahan - kesalahan yang mungkin terjadi telah ditanggulangi. Tampilan dari program ini juga masih belum rapih...belum sempat mempercantik tampilan program...heheh...
Untuk Logika Program, akan menyusul nanti...Perlu saya ingatkan kembali bahwa program ini BELUM FINAL ! sehingga tidak menutup kemungkinan bahwa sewaktu - waktu program yang ada di atas akan dirubah sesuai dengan kebutuhan.
Seluruh Program ini merupakan hasil pemikiran dari :
- Anthony Putra
- Budiarta Prakosa
- Moch. Rasyid
- Yudhi Pratama
Mudah - mudahan bisa membantu temen - temen yang lagi pada perlu...hohoh...
loading...
loading...




