SEBENERNYA INI TUGAS KELOMPOK GW YANG DOSENYA BU SARI hehee yauda sekalian aja gw post ke blog gw ehehhee
Ni Source Code-nya :

program link_list;
uses crt;
const
MAX = 1000;

var
simpul,i,chk,start,pil,ruang,x,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;
begin
for i := 1 to simpul do
begin
check;
if (info[x] = 0) then
begin
write('Masukkan Simpul ke ',x,' : ');
readln(info[x]);
if x = 1 then goto 10;
if next[x-1] = 0 then
begin
temp:=x;
next[x] := next[x-1];
next[x-1]:= temp;
end
else
begin
10:
write('Masukkan next ',x,' : ');
readln(chk);
if (next[chk] = x) or (chk=x) or (chk>simpul) then
begin
writeln('Input Salah !');
goto 10;
end
else
begin
next[x]:=chk;
end;
end;
end
else
begin
writeln('Simpul sudah terisi ');
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;
write('|',x,'|-');
if next[x] = 0 then
begin
write('|',info[x],'|',next[x],'|');
end;
while next[x] <> 0 do
begin
write('|',info[x],'|',next[x],'|-');
x:=next[x];
if next[x] = 0 then
begin
writeln('|',info[x],'|',next[x],'|');
end;
end;
end;

procedure sisip;
label ulangi;
var
loc:integer;
begin
check;
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;

procedure tabel;
begin
clrscr;
writeln(' | info | next |');
for i := 1 to ruang do
begin
if (info[i] = 0) and (next[i] = 0) then
begin
if i < ruang then
begin
next[i] := i+1;
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 : ');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.

—————–Test Run Program——————-

Misalnya kita mempunyai 4 buah data yaitu,

1. 75 dengan next 3
2. 60 dengan next 4
3. 80 dengan next 2
4. 90 dengan next 0 ( akhir dari linked list )

Maka, hasil cetakan dari program adalah sebagai berikut :

Linked list

NOTE : START dari 1.

Kemudian, bila kita sisipkan nilai 65 pada lokasi ke 3 maka tampilannya adalah :

Linked list2

—————–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.

SUMBER DARI BLOG ANAK 2 ia01