Tolong pencerahannya

Pemrograman menggunakan Free Pascal dan Lazarus

Tolong pencerahannya

Postby ono_efeyu » 17 Mar 2011, 15:18

Saya lagi ada masalah dengan tugas ini :

Buatlah program untuk membentuk 2 buah linked list (L1,L2)
Sisipkan L1 pada posisi tengah L2.


bantu1^.kanan := bantu^.kanan
bantu^.kanan:= L1


trus saya coba dengan ini :
Code: Select all
  1. program Linked_List;

  2. uses wincrt;

  3. type list =^node;

  4.      node = record

  5.             isi   : char;

  6.             kanan : list;

  7.      end;

  8. procedure sisipdepan (var L : list;  Data : char);

  9. var

  10.    baru,bantu : list;

  11. begin

  12.       new(baru);

  13.       baru^.isi := Data;

  14.       baru^.kanan :=Nil;

  15.        if L = Nil then  L := baru

  16.        else

  17.            begin

  18.                 bantu := L;

  19.                 while bantu^.kanan <>  Nil do

  20.                 bantu := bantu^.kanan;

  21.            bantu^.kanan := baru;

  22.        end;

  23. end;

  24.  

  25. procedure sambung (L2 : list; var L1 : list);

  26. var

  27.    bantu1 : list;

  28. begin

  29.      bantu1 := L2;

  30.      while  bantu1^.kanan <> nil do

  31.             bantu1 := bantu1^.kanan;

  32.             bantu1^.kanan := L1;

  33. end;

  34.  

  35. procedure cetak (L : list);

  36. var

  37.    bantu : list;

  38.    begin

  39.         bantu := L;

  40.         while bantu <> Nil do

  41.         begin

  42.              write (bantu^.isi,'');

  43.               bantu := bantu^.kanan;

  44.         end;

  45. end;

  46.  

  47. var

  48.    karakter     : char;

  49.    L1,L2        : list;

  50.    i            : integer;

  51.  

  52. begin

  53.      writeln ('Masukkan 5 buah karakter untuk L1');

  54.              for i := 1 to 5 do

  55.              begin

  56.                   write ('Masukkan karakter ke ',i, ' = ');

  57.                   readln (karakter);

  58.                   sisipdepan (L1,karakter);

  59.              end; writeln;

  60.              write('Isi linked List1 adalah : ');

  61.              cetak (L1); writeln;

  62.  

  63.      writeln ('Masukkan 3 buah karakter untuk L2');

  64.              for i := 1 to 3 do

  65.              begin

  66.                   write ('Masukkan karakter ke ',i, ' = ');

  67.                   readln (karakter);

  68.                   sisipdepan (L2,karakter);

  69.              end; writeln;

  70.              write('Isi linked List2 adalah :');

  71.              cetak (L2); writeln;

  72.      sambung (L1,L2);

  73.      write ('Isi Linked List1 adalah :');

  74.      cetak(L1); writeln;

  75. end.



Masalahnya bagaimana Menyisipkan L1 pada tengah L2.

Terima kasih sebelumnya.[/quote]
ono_efeyu
Junior Member
 
Posts: 5
Joined: 17 Mar 2011, 15:02

RE: Tolong pencerahannya

Postby D.E » 18 Mar 2011, 10:30

Sisipkan L1 pada posisi tengah L2? Lha kenapa bukan L3 yg disisipkan ditengah? Bukannya L1 bersebelahan dengan L2? Dimana letak* tengahnya? :confused:
:idea: Dude, if you don't understand the basics and just want to get someone else write the code for you, it means you really shouldn't study computer science. Find different field!
User avatar
D.E
Senior Member
 
Posts: 638
Joined: 04 May 2010, 18:12

RE: Tolong pencerahannya

Postby leledumbo » 19 Mar 2011, 22:08

ini maksudnya masukin suatu linked list (L1) ke linked list lain (L2) yak? Misal:

L1 = 2->3->4->#
L2 = 0->1->5->#

kalo L1 diselipin di antara 1 n 5, jadinya:

L2 = 0->1->2->3->4->5->#

gitu bukan? kalo iya, gampang om. cari dulu elemen di L2 buat tempat nyelip L1 (linear aja dari elemen pertama), pas ketemu posisinya, next dari elemen terakhir di L1 dipasang ke next dari tempat nyelip itu. untuk contoh di atas, di titik ini posisinya:

L1 = 2->3->4->angka 5 di L2
L2 = 0->1->5->#

abis ntu, nextnya si tempat nyelip dipindahin ke elemen pertama L1. jadinya:

L1 = 2->3->4->angka 5 di L2
L2 = 0->1->angka 2 di L1 [X] 5-># [X] maksutnya udah gak nyambung lagi

hasil akhirnya kali diikutin dari elemen pertama L2:

L2 = 0->1->2->3->4->5->#

gimana gan? maap nih, lagi males bikin gambar. ntar diupdate deh.
leledumbo
Senior Member
 
Posts: 262
Joined: 24 May 2010, 15:58

RE: Tolong pencerahannya

Postby ono_efeyu » 20 Mar 2011, 13:56

[at] om leledumbo
betul banget tuh...
tapi implementasi ke code pascalnya ane masih mudeng :((

tks b4[hr]
Om D.E

karena ini menggabungkan dua linked list yang ada,tanpa bantuan atau membentuk simpul baru (L3).
ono_efeyu
Junior Member
 
Posts: 5
Joined: 17 Mar 2011, 15:02

RE: Tolong pencerahannya

Postby leledumbo » 21 Mar 2011, 00:21

coba bikin dulu, ntar post di sini sementok-mentoknya
leledumbo
Senior Member
 
Posts: 262
Joined: 24 May 2010, 15:58

RE: Tolong pencerahannya

Postby D.E » 21 Mar 2011, 10:33

Code: Select all
  1. function SisipAnywhere(var DestNodeDalamList: list; const Data: Char): list;

  2. var

  3.   NodeBaru, Temp: list;

  4. begin

  5.   New(NodeBaru);  // inisialiasi node baru

  6.   NodeBaru^.isi := Data;

  7.  

  8.   // Apakah DestNodeDalamList = nil (asumsi linked list masih kosong)

  9.   if DestNodeDalamList = nil then

  10.   begin

  11.     // jika iya DestNodeDalamList adalah our first node!

  12.     New(DestNodeDalamList);

  13.     DestNodeDalamList^.isi := Data;

  14.     Result := DestNodeDalamList;

  15.     Exit; // keluar block procedure, tidak perlu exec baris selanjutnya

  16.   end;

  17.  

  18.   Temp := DestNodeDalamList^.kanan; // simpan dulu tautan link existing node

  19.   DestNodeDalamList^.kanan := NodeBaru; // link-kan ke node baru

  20.   NodeBaru^.kanan := Temp; // sambung nodebaru kanan ke tautan lama

  21.  

  22.   Resul := NodeBaru; // Mengembalikan tautan node yg dibuat (tidak harus)

  23. end;

  24.  

  25. // contoh penggunaan

  26. var

  27.   Node: list;

  28.   I: Integer;

  29. begin

  30.   Node := GenerateNodes; // asumsi buat / isi / set node sebanyak 5 node

  31.   // Node = first node

  32.  

  33.   // misal sisip ke 3, search / scan node target sequential

  34.   for I := 1 to 3 do

  35.     Node := Node^.kanan;

  36.  

  37.   // sekarang Node = node ke 3 dalam linked list

  38.   SisipAnywhere(Node, 'D');

:idea: Dude, if you don't understand the basics and just want to get someone else write the code for you, it means you really shouldn't study computer science. Find different field!
User avatar
D.E
Senior Member
 
Posts: 638
Joined: 04 May 2010, 18:12

RE: Tolong pencerahannya

Postby mambamaestro » 23 Mar 2011, 13:37

D.E wrote:
Code: Select all
  1. function SisipAnywhere(var DestNodeDalamList: list; const Data: Char): list;

  2. var

  3.   NodeBaru, Temp: list;

  4. ....




mantab :biggrin:
rupanya lagi banyak waktu ini.
mambamaestro
Member
 
Posts: 156
Joined: 06 May 2010, 14:14
Location: Surabaya

RE: Tolong pencerahannya

Postby D.E » 23 Mar 2011, 16:29

@atas saya: Ngga juga, cuman mampir aja. Ketik serabutan ngga' lebih dari 5 menit koq hihi :D
:idea: Dude, if you don't understand the basics and just want to get someone else write the code for you, it means you really shouldn't study computer science. Find different field!
User avatar
D.E
Senior Member
 
Posts: 638
Joined: 04 May 2010, 18:12


Who is online

Users browsing this forum: No registered users and 1 guest

cron