Senin, 04 Januari 2010

Linked List Dengan Pascal

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 :


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;
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  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…..

Kalo yang ingin file *.pas, klik

Ok, sekian dulu semoga berguna………(AHP, 4 Januari 2010, 3:15)

27 komentar:

  1. a,, ini bikin prosedur baru ya
    kalo di program utama gimana?

    BalasHapus
  2. @yuling: Iya, kalo di program utama bisa, tapi jadi kurang fleksibel, dia ngga bisa muncul di menu utama....tapi langsung jalanin begitu saja, gimana kalo datanya masih kosong coba....

    @anonim: Siapapun anda, terima kasih...

    BalasHapus
  3. ni Dedicated to ank2 SI-33-02 kan Nan.?
    hehehehe
    kalo ikhlas ntar tak kirimin buat nambah nilai gpp yak.?
    hoho
    >.<

    BalasHapus
  4. @LIa: Betul2, buat kalian dan pengunjung setia blog ini.....silahkan2, santai aja li.....

    BalasHapus
  5. aku dapat materi struktur data kok ga mudeng2 ya.. palagi linked list & Queue.. dah cari bahan mpe pucing7 keliling..dapat banyak tp msh tetep ga mudeng... ada yang bisa jelasin ga?? dengan bahasa yang mudah ya...

    BalasHapus
  6. tx yha sharenya .
    saya juga ada nie link download contoh pascal :
    http://belajar-pemrograman2.blogspot.com/2010/07/contoh-program-pascal.html
    tx

    BalasHapus
  7. gue coba ngelink biar semua pinter pemrograman kayak sampeyan mas....suwun

    BalasHapus
  8. wah ini dia yg w cari... bwt perbaikan nilai kuliah w...
    makasi ya mas...

    BalasHapus
  9. Ini skrip dari buku 'Learn Pascal In Three Days' Karangannya Sam A. Abolrous kan? Kenapa admin ( —[Adnane]— ) ngga' mencantumkan program ini dapet dari mana.

    Sebaiknya admin bercermin dulu deh, sebelum menyuruh orang untuk memberikan referensi link ke website ini.

    BalasHapus
  10. Sebenarnya ini dari dosen saya...lalu saya modifikasi sedikit :p

    BalasHapus
  11. bagus-bagus, pas banged, algi nyari tugas tentang ini... :)

    BalasHapus
  12. mantap gan,,, maakasih,, berguna banget.. :)

    BalasHapus
  13. sip. bisa buat referensi tuk buat tugas. ^_^

    BalasHapus
  14. makasih.... sangat membantu dlm menyelesaikan tgs

    BalasHapus
  15. mas kayak gimana contoh programnya linket list ganda, linked list berputar dan linked list banyak... ??
    di tunggu bantuanya mas...
    kirim ke emaiq saja mas..
    achmar_umar@yahoo.com

    BalasHapus
  16. makasih banyak mas bro Kebetulan saya lagi mempelajari LinkedList

    BalasHapus
  17. Matur Suwon mas bro ^^

    BalasHapus
  18. ngakak gua baca programnya gan.. pakek kata "gundul mu"

    BalasHapus
  19. Thanks coding linked list ny. Sangat membantu. :)

    BalasHapus
  20. mantap gan,,,sukses trussssss,,,,,,,

    BalasHapus
  21. mau ngebantu atau minta bantuan sih sebenernya ???

    BalasHapus
  22. Semua kunci nya ada di procedure mas
    makasih mas postingan nya berguna bagi saya

    BalasHapus

Kirim Komentar