Saat pertama kali membaca judul itu mungkin ada anggapan kalau postingan ini akan berisi penjelasan mendetail tentang bahasa planet tersebut, seperti postingan-postingan lainnya. Oke, mungkin disini saya akan menjelaskan sedikit tentang Linked List, tapi tidak terlalu mendetail. Karena saya juga belum begitu mengerti. Sederhananya, Linked list adalah daftar record sejenis yang satu sama lain dihubungkan dengan ponter sehingga membentuk data yang berantai, seperti array, cuman Linked List lebih dinamis, pengertian lengkapnya bisa dilihat di Wikipedia.
Oke…yang jadi fokus di postingan ini sebenarnya saya hanya ingin share contoh Linked List dalam bahasa pascal. Kodenya seperti ini :
Nah, Pusing? Saya juga….
Tapi jangan salah paham dulu, kode ini bukan saya yang buat. Saya hanya memodifikasi sedikit agar dia bisa menulis ke file teks. Mengenai alur program, masih saya pahami (dan sejak kemarin ngga paham-paham). Kode ini saya posting, siapa tahu ada yang membutuhkan listing program Linked List, entah untuk di pelajari, di utak-atik, memperbaiki nilai mata kuliah, atau hanya sekedar melampiaskan dendam masa lalu, saat masih menjadi mahasiswa dengan membanting kode ini.
Mungkin ada yang paham code ini? Silahkan dengan iklas di jelaskan, saya sedang butuh itu justru…..
Oke…yang jadi fokus di postingan ini sebenarnya saya hanya ingin share contoh Linked List dalam bahasa pascal. Kodenya seperti ini :
PROGRAM LinkedList1;
CONST
Header ='------------ Menu Utama ------------';
Separator ='------------------------------------';
TYPE
DataString = STRING[30];
ListPointer = ^ListRecord;
ListRecord = RECORD
DataField : DataString;
NextField : ListPointer
END;
VAR
FirstPointer : ListPointer;
PROCEDURE BuildList(VAR FirstPointer : ListPointer;
DataItem : DataString);
VAR
ToolPointer : ListPointer;
BEGIN
NEW(ToolPointer);
ToolPointer^.DataField := DataItem;
ToolPointer^.NextField := FirstPointer;
FirstPointer:=ToolPointer
END;
PROCEDURE ReadList(FirstPointer : ListPointer);
VAR CurrentPointer : ListPointer;
BEGIN
CurrentPointer := FirstPointer;
WHILE CurrentPointer <> NIL DO
BEGIN
WRITELN(CurrentPointer^.DataField);
CurrentPointer := CurrentPointer^.NextField
END;
WRITELN
END;
PROCEDURE GetData(VARFirstPointer:ListPointer);
VAR Name:DataString;
BEGIN
WRITELN('Masukkan nama yang akan ditambahkan lalu tekan ENTER jika selesai.');
READLN(Name);
WHILE LENGTH(Name) <> 0 DO
BEGIN
BuildList(FirstPointer,Name); READLN(Name)
END
END;
PROCEDURE DisplayInfo(FirstPointer:ListPointer);
BEGIN
WRITELN(Separator);
WRITELN('Isi dari daftar:');
ReadList(FirstPointer);
WRITE('Tekan sembarang tombol untuk lanjut...');
READLN
END;
VAR Option : INTEGER;
BEGIN
WRITELN(Header);
WRITELN('1. Simpan data pada daftar.');
WRITELN('2. Tampilan daftar.');
Writeln('3. Tulis data ke teks ');
WRITELN('4. Keluar.');
WRITELN(Separator);
WRITE('Pilihan --> ');
READLN(Option);
CASE Option OF
1 : GetData(FirstPointer);
2 : DisplayInfo(FirstPointer);
3 : cetak(firstpointer);
4 : exit;
END;
Menu
END;
BEGIN
FirstPointer := NIL;
menu
END.
CONST
Header ='------------ Menu Utama ------------';
Separator ='------------------------------------';
TYPE
DataString = STRING[30];
ListPointer = ^ListRecord;
ListRecord = RECORD
DataField : DataString;
NextField : ListPointer
END;
VAR
FirstPointer : ListPointer;
PROCEDURE BuildList(VAR FirstPointer : ListPointer;
DataItem : DataString);
VAR
ToolPointer : ListPointer;
BEGIN
NEW(ToolPointer);
ToolPointer^.DataField := DataItem;
ToolPointer^.NextField := FirstPointer;
FirstPointer:=ToolPointer
END;
PROCEDURE ReadList(FirstPointer : ListPointer);
VAR CurrentPointer : ListPointer;
BEGIN
CurrentPointer := FirstPointer;
WHILE CurrentPointer <> NIL DO
BEGIN
WRITELN(CurrentPointer^.DataField);
CurrentPointer := CurrentPointer^.NextField
END;
WRITELN
END;
PROCEDURE GetData(VARFirstPointer:ListPointer);
VAR Name:DataString;
BEGIN
WRITELN('Masukkan nama yang akan ditambahkan lalu tekan ENTER jika selesai.');
READLN(Name);
WHILE LENGTH(Name) <> 0 DO
BEGIN
BuildList(FirstPointer,Name); READLN(Name)
END
END;
PROCEDURE DisplayInfo(FirstPointer:ListPointer);
BEGIN
WRITELN(Separator);
WRITELN('Isi dari daftar:');
ReadList(FirstPointer);
WRITE('Tekan sembarang tombol untuk lanjut...');
READLN
END;
procedure cetak(firstpointer:listPointer);
var jejek:text;
CurrentPointer : ListPointer;
begin
assign(jejek,'gundulmu.txt');
rewrite(jejek);
writeln(jejek,'Tertulis dengan Indah sebagai berikut :');
writeln(jejek);
Writeln(jejek,separator);
Writeln(jejek,'ISi dari daftar');
writeln(jejek);
CurrentPointer := FirstPointer;
WHILE CurrentPointer <> NIL DO
BEGIN
WRITELN(jejek,CurrentPointer^.DataField);
CurrentPointer := CurrentPointer^.NextField
END;
writeln;
writeln('Data telah di tulis ke gundulmu.txt, tinggal di lihat saja...');
readln;
close(jejek);
end;
PROCEDURE Menu;var jejek:text;
CurrentPointer : ListPointer;
begin
assign(jejek,'gundulmu.txt');
rewrite(jejek);
writeln(jejek,'Tertulis dengan Indah sebagai berikut :');
writeln(jejek);
Writeln(jejek,separator);
Writeln(jejek,'ISi dari daftar');
writeln(jejek);
CurrentPointer := FirstPointer;
WHILE CurrentPointer <> NIL DO
BEGIN
WRITELN(jejek,CurrentPointer^.DataField);
CurrentPointer := CurrentPointer^.NextField
END;
writeln;
writeln('Data telah di tulis ke gundulmu.txt, tinggal di lihat saja...');
readln;
close(jejek);
end;
VAR Option : INTEGER;
BEGIN
WRITELN(Header);
WRITELN('1. Simpan data pada daftar.');
WRITELN('2. Tampilan daftar.');
Writeln('3. Tulis data ke teks ');
WRITELN('4. Keluar.');
WRITELN(Separator);
WRITE('Pilihan --> ');
READLN(Option);
CASE Option OF
1 : GetData(FirstPointer);
2 : DisplayInfo(FirstPointer);
3 : cetak(firstpointer);
4 : exit;
END;
Menu
END;
BEGIN
FirstPointer := NIL;
menu
END.
Nah, Pusing? Saya juga….
Tapi jangan salah paham dulu, kode ini bukan saya yang buat. Saya hanya memodifikasi sedikit agar dia bisa menulis ke file teks. Mengenai alur program, masih saya pahami (dan sejak kemarin ngga paham-paham). Kode ini saya posting, siapa tahu ada yang membutuhkan listing program Linked List, entah untuk di pelajari, di utak-atik, memperbaiki nilai mata kuliah, atau hanya sekedar melampiaskan dendam masa lalu, saat masih menjadi mahasiswa dengan membanting kode ini.
Mungkin ada yang paham code ini? Silahkan dengan iklas di jelaskan, saya sedang butuh itu justru…..
Read more: http://komputok.blogspot.com/2010/01/linked-list-dengan-pascal.html#ixzz190H3Igjk
Tidak ada komentar:
Posting Komentar