Anda di halaman 1dari 21

LAPORAN HASIL PRAKTIKUM

STRUKTUR DATA

NAMA

: ALI FAHRUDDIN

NIM

: DBC 113 046

KELAS

:B

MODUL

: III ( LINKED LIST )

JURUSAN TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS PALANGKA RAYA

2014
BAB I
TUJUAN DAN LANDASAN TEORI
1.1 Tujuan Praktikum

1. Memahami struktur data linked list.


2. Mengetahui iimplementasi linked list dengan pointer.
3. Mampu menggunakan struktur data linked list dalam mennyelesaikan
pemrograman.

1.2 Landasan Teori


Linked list merupakan struktur data yang memiliki kelebihan dalam efisiensi
memori dan kecepatan dalam menyisipkan data. Linked list berguna untuk
menyimpan beberapa data dalam memori. Komponen dasar dari suatu list disebut
sebagai node. Sebuah node terdiri dari dua buah bagian. Bagian pertama adalah
bagian yang memuat informasi data, bagian kedua adalah bagian yang
menunjukkan alamat data berikutnya atau disebut juga dengan bagian petunjuk.
Linked List dengan Pointer
Pascal menyediakan prosedur standar untuk membuat dan menghapus sebuah
variabel dinamis, yaitu new dan dispose. Jika P telah dideklarasikan sebagai
sebuah variabel pointer bertipe node, maka pernyataan new(P) akan menciptakan
sebuah variabel dinamis baru bertipe node dan menandai lokasinya dengan pointer
P. Sedangkan pernyataan dispose(p) akan mengembalikan ruang yang digunakan
pada lokasi yang ditunjuk P ke sistem komputer; pointer P menjadi tidak
terdefinisi lagi. Ilustrasi penggunaannya adalah sebagai berikut:
Pil

Nil

New(P)

??

P^:=123

123

Dispose(P)

??

Deklarasi inked List dengan Pointer


type
tipeinfo = record
nim : string;
nilai : integer;
end;
tipeptr = ^tienode;
tipelist = tipeptr;
tipenode = record
info : tipeinfo;
next : tipeptr;
end;
var list : tipelist;
Elemen-elemen list berupa record yang memuat field berisi informasi data serta
sebuah field bertipe pointer yang berisi alamat elemen berikutnya.
Operasi pada Linked List
1. Membuat List
Prosedur ini untuk membuat list pertama kali, yaitu mengalokasikan pointer untuk
head. Nilai awal dari list adalah kosong (nil).
procedure inisialisasi (var list : tipelist);
begin
new(list);
list := nil;
end;
2. Mengetahui Panjang List (Jumlah Elemen)
Mengetahui panjang list dilakukan dengan menghitung seluruh node. Caranya
adalah mengunjungi setiap node dan menaikkan nilai counter sehingga dijumpai
node terakhir. Contoh fungsinya adalah:
function size (list : tipelist) : integer;
var i : integer;
begin

i := 0;
while list <> nil do
begin
i := i + 1;
list := list^.next;
end;
size := i;
end;
3. Menyisipkan Node Baru
Menyisipkan node baru pada ist diakukan dengan cara mencari lokasi tempat node
baru akan disisipkan, kemudn menyisipkan node baru tersebut. Hal ini dapat
dilakukan menggunakan bantuan sebuah pointer untuk mecari sebuah node yang
akan tersambung langsung dengan node baru. Kemudian, nade baru dapat
disisipkan pada lokasi sebelum atau sesudah node terseut. Swebagai contoh,
prosedur berikut adalah untuk menyisispkan node baru sebelum node:
procedure sisipnode (var list : tipelist; IB : tipeinfo);
var
NB, ptr : tipeptr;
ketemu : boolean;
begin
new(NB);
NB^.info := IB;
NB^.next := nil;
if list = nil then list := NB
else
if IB.nim <= list^.info.nim then
begin
NB^.next := list;
list := NB;
end
else
begin
ketemu := false;
ptr := list;
while (ptr^.next <> nil) and not (ketemu) do
begin
if ptr^.next^.info.nim >= IB.nim then

ketemu := true'
else
ptr := ptr^.next
end;
NB^.next := ptr^.next;
ptr^.next := NB
end
end;

4. Mengganti Nilai Informasi pada Suatu Node dalam List


Mengganti nilai inormasihanya akan menggan info pada suatu node tanpa
menghapus node tersebut. Hal ini dapat dilakukan dengan mencari node yang
sesuai dengan nilai yang akan diganti, selanjutnya mengganti nilai lama dengan
nilai yang baru.
Berikut ini contoh prosedur untuk mengganti nilai pada suatu list:
a. Mengganti nilai mahasiswa berdasarkan nomor mahasiswa,
b. Mengganti semua node yang mempunyai nilai tertentu (niai lama) dengan
nilai yang baru.
procedure gantinode1(var list : tipelist; kunciGanti:
string; nilaibaru : integer;);
var ptr : tipeptr;
begin
new(ptr);
ptr := list;
while (ptr <> nil) and (ptr^.info.nim <>
kunciganti) do
ptr := ptr^.next;
if ptr <> nil then
ptr^.info.nilai := nilai baru
end;
procedure gantinode2(var list : tipelist; nlama, nbaru
: integer);
var ptr : tipeptr;
begin
new(ptr);
ptr := list;
while (ptr <> nil) do
begin
if ptr^.info.nilai := nlama then
ptr^.info.nilai := nbaru;
ptr := ptr^.next
end;
end;

5. Menghapus Node dari Suatu List

Menghapus node adalah menghapus sebuah elemen dari list. Hal ini dapat
dilakukan dengan mencari/menandai node yang akan dihapus, yaitu node yang
memuat nilai seperti yang akan dihapus, kemudian mengarahkan pointer pada
node sebelumnya ke arah node sesudah node yang akan dihapus, dan kemudian
menghapus node yang dimaksud.
procedure hapusnode(var list:tipelist; kuncihapus :
string);
var ptr1, ptr2 : tipeptr;
begin
new(ptr1);
new(ptr2);
ptr1 := nil;
ptr2 := nil;
while (ptr2^.info.nim <> kuncihapus) do
begin
ptr1 := ptr2;
ptr2 := ptr2^.next;
end;
if ptr1 = nil then
list := list^.next
else
ptr1^.next := ptr2^.next
dispose (ptr2)
end;

BAB II
LANGKAH KERJA
A. Tugas Praktikum
1. Buatlah program untuk menambah, menghapus, dan menampilkan data
dengan linear linked list dan data tersebut harus urut.

BAB III
PEMBAHASAN
Linked list adalah salah satu struktur data dasar yang sangat fundamental dalam
bidang ilmu komputer. Dengan menggunakan linked list maka programmer dapat
mennyimpan datanya kapanpun dibutuhkan. Linked List berisi kumpulan data

(node) yang tersusun secara sekuensial, saling sambung menyambung, dinamis


dan terbatas.
Pembahasan pada Program linked list:

Untuk membuat program dengan pascal pertama-tama kita membuat nama


programnya dengan Linked_List dengan Uses crt.

Kemudian kita membuat tipe data bentukan yaitu DtList dengan Pointer
simpul node (^Node) dan kita membuat tipe record yaitu node dengan isi
info bertipe Elemen serta kiri, kanan bertipe Dtlist.

Kita membuat procedure InitList yang digunakan untuk pertama kali, yaitu
mengalokasikan pointer untuk head, nilai awal dari list adalah kosong (nil).

Untuk mengngecek apakah sudah ada List yang masuk maka kita membuat
Function Kosong yang bertipe boolean dimana masukkan awal dari list ini
adalah kosong (nil).

Kemudian kita buat procedure Tambah yang digunakan untuk menambah


data yang memiliki parameter data yang bertipe elemen dan variabel l yang
bertipe DtList. Dan didalam procedure ini kita membuat variabel baru yaitu
variabel baru dan bantu yang bertipe Dtlist.

Pada prosedure ini terdapat beberapa statement yang dilakukan untuk


menyisipkan node baru pada list yaitu dilakukan dengan cara mencari lokasi
tempat node baru akan disisipkan, kemudian menyisipkan node baru tersebut.
Maka kita gunakan pointer untuk mencari sebuah node yang akan tersambung
langsung dengan node baru, kemudian node baru disisipkan pada lokasi
tersebut.

Pada procedure tambah ini terdapat beberapa pemilihan menggunakan


if..then..else yang dilakukan untuk mencari lokasi node baru akan
ditempatkan yaitu apabila list masih kosong maka list baru langsung
dimasukkan. Apabila sudah ada list yang menempati node tersebut akan
mencarikan tempat yang kosong pada data list yang akan masuk.

Dan apabila pemilihan diatas masih belum menemukan lokasi yang tepat
maka procedure ini juga terdapat pengulangan while..do yang digunakan
untuk persyaratan (bantu^.kanan <> nil) dan (bantu^.kanan^.info < data)
keduanya terpenuhi maka akan dilakukan pengulangan untuk mencari lokasi
list tersebut.

Dan jalan terakhir yang ditempuh untuk mencarikan tempat list adalah dengan
pemilihan if bantu^.kanan <> nill. Dan untuk mengakhiri procedure ini kita
ketikkan statement end;.

Selanjutnya kita membuat procedure Hapus yang digunakan untuk


menghapus data list yang telah dimasukkan. Procedure ini menggunkan
parameter variabel data dengan tipe elemen dan variabel l yang bertipe
DtList dan didalam procedure ini kita bentu variabel bantu yang bertipe
DtList.

Didalam procedure ini melakukan penghapusan sebuah elemen dari list yang
dilakukan adalah dengan mencari/menandai node yang akan dihapus, yaitu
node yang memuat nilai yang akan dihapus, kemudian mengarahkan pointer
pada node sebelumnya ke arah node sesudah node yang akan dihapus, dan
kemudian menghapus node yang dimaksudkan. Disini ada beberapa pemilihan
yang dilakukan apabila list kosong akan muncul pesan Tidak ada Data. Dan
apabila ada data yang masuk dalam list maka program ini akan menampilkan
data apa yang dihapus dan user disuruh untuk menginputkan data list apa yang
dihapus, apabila data tidak ditemukan maka akan ada pesan Tidak ada data,
dan apabila data list telah ditemukan maka data tersebut akan dihapus

Kemudian kita membuat procedure tampil yang digunakan untuk


menampilkan data masukan yang diberikan oleh user. Procedure ini
menggunakan parameter l yang bertipe DtList yang berisi tentang
pengulangan while..do yang digunakan untuk mencari berapakah data list
yang masuk dan digunakan untuk menampilkannya.

Setelah itu kita membuat procedure menu yang digunakan untuk


menampilkan menu pada program linked list yang terdiri dari menu
1.Menambah Data; 2.Menghapus Data; 3.Menampilkan Data; dan
4.Keluar.

Kemudian kita membuat program utama. Dalam program utama kita


mendeklarasikan variabelnya diantaranya variabel a bertipe DtList; c,pil
bertipe Integer; lagi bertipe boolean yang variabel-variabel tersebut
digunakan dalam program utama.

Dalam program utama ini digunakan variabel lagi dengan nilai false dan
kemudian kita gunakan pengulangan while..do dengan not lagi yang
digunakan apabila nilainya tidak salah. Kemudian kita gunakan statement
clrscr yang digunakan untuk membersikan output yang ada sebelumnya.
Kemudian kita munculkan procedure menu untuk menampilkan menu. Dan

kita gunakan pengulangan while..do dengan persyaratan inputan 1 sampai 4.


Dan kita berikan pilihan dengan menggunakan case..of menggunakan variabel
pil.

Untuk pilihan 1 kita berikan output Menampilkan Data. Dan kita berikan
statement readln(c) yang digunakan untuk menginputkan data yang
dimaksukkan oleh user. Serta kita berikan procedure Tambah yang
ditambahkan dengan parameter c dan a.

Dan pada pilihan 2 kita berikan output Menghapus Data. Dan untuk
menghapus data yang dimaksud kita berikan statement readln(c) yang
digunakan untuk mencari data yang cocok untuk dihapus yang dinputkan oleh
user. Serta kita menggunakan procedure Hapus dengan ditambah parameter c
dan a.

Pada pilihan 3 kita berikan output Menampilkan Data, kita menggunakan


pemilihan if..then..else yang digunkan untuk memilih apakah ada data yang
masuk ataukah list tersebut kosong, apabila list kosong maka akan muncul
pesan Tidak ada data, dan apabila list tersebut mempunyai isi maka akan
ditampilkan semua data yang dimasukkan oleh user, serta untuk mendukung
untuk menampilkan list maka kita tuliskan statement procedure Tampil

dengan ditambahkan parameter a. Untuk menampilkan output kita tuliskan


statement readln serta statement end digunakan untuk mengakhiri pilihan ini.

Dan pada pilihan yang terakhir yaitu pilihan 4 kita menuliskan statement lagi
dengan nilai benar yang digunakan untuk mengakhiri program ini.

Dan untuk mengakhiri program ini maka kita tuliskan statement end. dengan
menggunkan titik (.)

Untuk mengeksekusi program ini maka kita tekan CTRL+F9 maka output
yang akan muncul adalaha;

BAB IV
KESIMPULAN
Linked list adalah daftar record sejenis yang satu sama lain dihubungkan
dengan ponter sehingga membentuk data yang berantai. Linked list merupakan

struktur data yang memiliki kelebihan dalam efisiensi memori dan kecepatan
dalam menyisipkan data. Linked list berguna untuk menyimpan beberapa data
dalam memori.
Prosedur standar untuk membuat dan menghapus sebuah variabel dinamis,
yaitu new dan dispose.
1. Jika P telah dideklarasikan sebagai sebuah variabel pointer bertipe node,
maka pernyataan new(P) akan menciptakan sebuah variabel dinamis baru
bertipe node dan menandai lokasinya dengan pointer P.
2. Sedangkan pernyataan dispose(p) akan mengembalikan ruang yang
digunakan pada lokasi yang ditunjuk P ke sistem komputer; pointer P
menjadi tidak terdefinisi lagi.
Elemen-elemen list berupa record yang memuat field berisi informasi data
serta sebuah field bertipe pointer yang berisi alamat elemen berikutnya. Operasi
pada Linked List sebagai berikut:

Membuat list
Mengetahui panjang list (jumlah elemen)
Menyisipkan node baru
Mengganti nilai informasi pada suatu node dalam list
Menghapus node dari suatu list

BAB V
DAFTAR PUSTAKA
Teknik informatika, 2014. Modul Struktur data. Universitas Palangkaraya:
Palangkaraya.
http://brawlyvonfabre.blogspot.com/feeds/posts/default

http://books.google.co.id/books/about/struktur_data_pemrograman_dengan_p
ascal.html?id=nlHmSh2KVXYC

BAB VI
LAMPIRAN
o Coding:

o Output

Tampilan utama pada program linked list

Untuk menambah data kita inputkan 1. Misalnya kita beri masukan data 11.

Kita menambah data lagi maka kita inputkan 1. Misalnya dengan masukan
data 12

Ketika kita ingin menambah data lagi maka kita menginputkan 1. Misalnya
dengan masukan data 13.

Kita ingin menampilkan data yang telah kita inputkan tadi, maka untuk
menampilkan data tersebut kita inputkan 3 maka muncul Data yang kita
inputkan tadi yaitu data 11,12, dan 13.

Ketika ingin menghapus data yang telah kita inputkan maka kita inputan 2
maka muncul pesan data mana yang ingin dihapus misalnya data 12.

Ketika ingin menampilkan data kita inputkan kembali maka kita ketikkan 3
maka muncul output Data dalam list 11 dan 13 saja sedangkan data 12 hilang
karena Data sudah dihapus.

Anda mungkin juga menyukai