Anda di halaman 1dari 17

STRUKTUR DATA

Linked List
Linked List juga disebut sebagai one-way list, adalah koleksi linier dari elemen data yang disebut simpul atau node. cara untuk melinierkannya adalah dengan menggunakan penunjuk atau pointer. Setiap node terdiri dari dua bagian, yaitu : 1. bagian yang menyimpan data(Info) 2. bagian yang berisi alamat pointer penghubung(Link). link inilah yang menghubungkan satu elemen data dengan elemen data lainnya.

Linked List
Contoh Penerapan Linked list Dasar uses crt; type PSimpul= ^TSimpul; TSimpul = record indeks:integer; berikut: PSimpul; end; var akar,simpul: PSimpul; function sisipSimpul(mSimpul: PSimpul;mElement: integer ):PSimpul; var tmpSimpul: PSimpul; begin new(tmpSimpul); tmpSimpul^.indeks := mElement; tmpsimpul^.berikut:= nil; if msimpul <> nil then begin if msimpul^.berikut <> nil then begin tmpsimpul^.berikut := msimpul^.berikut; msimpul^.berikut := tmpsimpul; end else msimpul^.berikut := tmpsimpul; end; sisipSimpul:= tmpSimpul; end; procedure hapusSimpul(msimpul:Psimpul; indeks:integer); var p,next,prev:PSimpul;i:integer; begin
i= 0;

Linked List
p := msimpul; while p <> nil do begin next:= p^.berikut; inc(i); if i = indeks-1 then begin prev := p; p := next; next := p^.berikut; dispose(p); prev^.berikut := next; end; p:= next; end; end; procedure Cetak(mSimpul:PSimpul); begin if mSimpul = nil then writeln('List Kosong') else begin while msimpul <> nil do begin writeln(msimpul^.indeks); msimpul := msimpul^.berikut; end; end; end;

Linked List
function getIndeks(msimpul:PSimpul;mIndeks: integer):PSimpul; var i: integer; p,next: Psimpul; begin i:=0; p:= mSimpul; while p <> nil do begin inc(i); next:=p^.berikut; if i = mindeks then begin getindeks := p; break; end; p := next; end; end; procedure hapusPointer; var p,next:PSimpul; begin

Linked List
p := akar; while p <> nil do begin next := p^.berikut; dispose(p); p:=next; end; end; var i,j, element: integer; begin clrscr; write('masukan jumlah elemen :'); readln(j); for i:= 0 to j-1 do begin write('Masukan elemen ke-',i,' :'); readln(element); simpul := sisipSimpul(simpul,element); if akar = nil then akar := simpul; end;

Linked List
cetak(akar); write('Pilih baris yang akan disisipkan : '); readln(j); simpul := getindeks(akar,j); write('Masukan Nilai yang akan disisipkan :'); readln(j); simpul := sisipSimpul(simpul, j); cetak(akar); write('Pilih baris simpul yang akan dihapus : '); readln(j); hapussimpul(akar,j); cetak(akar); hapusPointer; readln; end.

Stack Atau Tumpukan


Stack atau tumpukan adalah bentuk khusus dari list linier. Pada penghapusan dan pemasukan elemennya hanya dapat dilakukan pada satu sisi yaitu sisi terakhir pada list yang disebut top.

Stack Atau Tumpukan


uses crt; type TStack = record Stacks: array[0..10] of integer; top: integer; end; var tumpukan : TStack; // menginisialisasikan stack function initStack(var stack:TStack): boolean; begin stack.top:= -1; // kondisi stack kosong initStack:= true; end;

Stack Atau Tumpukan


function push(var stack:TStack; data: integer): boolean; begin if high(stack.stacks) = stack.top then begin writeln('Ups..! tumpukan penuh'); push:= false; exit; end else begin inc(stack.top); stack.stacks[stack.top]:= data; push := true; end; end;

Stack Atau Tumpukan


function pop(var stack: TStack): integer; begin if stack.top = -1 then begin writeln('Ups..! tumpukan telah kosong'); pop := -1 end else begin pop := stack.stacks[stack.top]; stack.stacks[stack.top]:=0; dec(stack.top); end; end;

Stack Atau Tumpukan


Var jawab, data: longint; begin clrscr; initStack(tumpukan); repeat writeln('1. Masukan data kedalam tumpukan '); writeln('2. Keluarkan data dari tumpukan '); writeln('0. Keluar '); write('Masukan pilihan anda :'); readln(jawab); case jawab of 1: begin write('Masukan datanya :'); readln(data); push(tumpukan, data); end; 2: begin writeln('Data Tumpukan teratas = ', pop(tumpukan)); end; 0:; else writeln('Maaf! salah memasukan tombol'); end; readln; until jawab =0; end.

QUEUE ATAU ANTRIAN

Queue atau antrian adalah suatu bentuk khusus dari list linier dengan operasi penyisipan hanya diperbolehkan pada satu sisi saja yang disebut sisi belakang (REAR), sedangkan operasi penghapusan hanya boleh pada sisi lainnya yang disebut sisi depan (FRONT). Deklarasi QUEUE atau antrian Deklarasi antrian const max_elemen=100; type TQueue = array[1..max_elemen] of integer; var antrian:Tqueue; depan, belakang:integer;

QUEUE ATAU ANTRIAN


Contoh Program sederhana Queue atau antrian

uses crt; const Max_Elemen=10; type TAntri = array[1..max_elemen] of char; var head,tail,pilih: byte; antri:TAntri; masukan:char; procedure init; var i: byte; begin head:=0; tail:=0; for i:=1 to max_elemen do antri[i]:='-'; end; function Kosong: boolean; begin kosong:=(tail=0); end; function penuh: boolean; begin penuh:=(tail=max_elemen); end;

procedure tambahElemen(elemen:char); begin if not penuh then begin if kosong then begin head:=1; tail:=1; end else inc(tail); antri[tail]:= elemen; end; end; function keluarkan:char; var i: byte; begin if not kosong then begin if tail=1 then begin antri[tail]:='-'; tail:= 0; head:=0; end else begin keluarkan:=antri[head]; for i:=head to tail-1 do begin antri[i]:= antri[i+1]; end; dec(tail); end; if not kosong then antri[tail+1]:='-' else antri[tail]:='-'; end; end;

procedure tampilkan; var i:byte; begin gotoxy(10,8); writeln(' ':20); gotoxy(10,8); for i:= 1 to 10 do write('|',antri[i]:3); write('|'); end; begin clrscr; init; begin writeln('1-Masukan Antrian'); writeln('2-Keluarkan Antrian'); writeln('0-Keluar'); while not pilih <> 0 do begin gotoxy(1,4); write(' ':30);gotoxy(1,4); write('Pilihan anda?'); readln(pilih); case pilih of

1: begin if not penuh then begin gotoxy(30,4); write('Masukan karakter:'); readln(masukan); tambahElemen(masukan);tampilkan; end else begin gotoxy(30,4); write('antrian penuh'); readln; end; end; 2: begin if not kosong then begin gotoxy(30,4); write(keluarkan,' telah dikeluarkan'); readln;tampilkan; end else begin gotoxy(30,4); write('Upss! Kosong'); readln; end; end; 0:exit; end; gotoxy(30,4);writeln(' ':30); end; end; end.

Anda mungkin juga menyukai