materi ini adalah tugas ke 2 saya d semester2 ini, Single Linked List, ternyata di mata kuliah struktur data ini makin lama makin sulit ya, di bawah ini contoh program menggunakan linked list dalam bahasa pascal (penyisipan depan, penyisipan tengah, penyisipan belakang) yang saya buat, semoga bermanfaat…
program linked_list;
uses crt;
type
perpus_pointer = ^simpul;
simpul = record
nama_buku : string;
next : perpus_pointer;
end;
var
menu,sisip: integer;
i : string;
awal,akhir : perpus_pointer;
procedure menu_pilihan(var menu:integer);
begin
write(‘Masukan Menu Pilihan : ‘);readln(menu);
end;
procedure input(var i:string);
begin
write(‘Masukan Data : ‘);readln(i);
end;
procedure penyisipan_depan(i : string; var awal,akhir:perpus_pointer);
var
baru : perpus_pointer;
begin
new(baru);
baru^.nama_buku := i;
if (awal=nil)
then
begin
baru^.next := nil;
akhir := baru;
end
else
baru^.next := awal;
awal := baru;
end;
procedure penyisipan_belakang(i : string; var awal,akhir:perpus_pointer);
var
baru : perpus_pointer;
begin
new(baru);
baru^.nama_buku := i;
baru^.next := nil;
if (awal=nil)
then
awal := baru
else
akhir^.next := baru;
akhir := baru;
end;
procedure penyisipan_tengah(i : string; var awal,akhir:perpus_pointer);
var
baru,bantu : perpus_pointer;
datasisip : string;
ketemu : boolean;
begin
new(baru);
baru^.nama_buku := i;
if (awal = nil)
then
begin
baru^.next := nil;
awal := baru;
akhir := baru;
end
else
begin
write(‘Data Dimasukan Setelah : ‘);readln(datasisip);
bantu := awal;
ketemu := false;
while (not ketemu) and (bantu <> nil) do
begin
if(bantu^.nama_buku = datasisip)
then
ketemu := true
else
bantu := bantu^.next;
end;
if(bantu=akhir)
then
begin
new(baru);
baru^.nama_buku := i;
baru^.next := nil;
if (awal=nil)
then
awal := baru
else
akhir^.next := baru;
akhir := baru;
end;
end;
end;
procedure tampil_data(awal:perpus_pointer);
var
bantu : perpus_pointer;
begin
bantu := awal;
while (bantu <> nil) do
begin
writeln(bantu^.nama_buku);
bantu := bantu^.next;
end;
end;
begin
repeat
menu_pilihan(menu);
case menu of
1 : begin
clrscr;
writeln(’1. Penyisipan Depan’);
writeln(’2. Penyisipan Tengah’);
writeln(’3. Penyisipan Belakang’);
write(‘Masukan Menu Sisip : ‘);readln(sisip);
if sisip = 1
then
begin
input(i);
penyisipan_depan(i,awal,akhir);
end
else
begin
if sisip = 2
then
begin
input(i);
penyisipan_tengah(i,awal,akhir);
end
else
begin
if sisip = 3
then
begin
input(i);
penyisipan_belakang(i,awal,akhir);
end
end;
end;
end;
2 : begin
clrscr;
tampil_data(awal);
end;
end;
until (menu > 2);
readkey;
end.
itu penyisipannya nama buku doang bukan?