Cari di Blog Ini !

Google Area

Yahoo Area !

RSS UG Warta Warga

Categories

Berlangganan Artikel

Berlangganan Via Email :

Powered By: FeedBurner

 

November 2009
M T W T F S S
« Oct   Dec »
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Follow Me !

Copyright !

  • 26Nov

    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,

    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.

    Seluruh Program ini merupakan hasil pemikiran dari :

    1. Anthony Putra
    2. Budiarta Prakosa
    3. Moch. Rasyid
    4. Yudhi Pratama

    Mudah - mudahan bisa membantu temen - temen yang lagi pada perlu...hohoh... ;)

    GD Star Rating
    loading...
    GD Star Rating
    loading...

    Posted by rasyid @ 1:19 am

    Tags: , , , , ,


 
Add to Technorati Favorites

Tinggalkan Balasan

Perhatian: Komentar anda akan menunggu konfirmasi dari Acid baru kemudian ditampilkan.