Post on 24-Aug-2014
Mata Kuliah Struktur Data
Disusun Oleh Kelompok 8 :
1. Pratama Putra Effendi 101110932. Muhammad Rikat Rifaldi 101111033. Riswan Panji Pratomo 101119394. Andrew Christie Tooy 10111931
Kelas : IF-3Jurusan Teknik Informatika
UNIVERSITAS KOMPUTER INDONESIA2012
PSEUDOCODEprocedure input_data(Output baru : PSimpul){I.S. : user memasukkan data yang akan disisipkan (baru)}{F.S. : menghasilkan data (baru) yang akan disisipkan dalam circular double linked list}
Kamus
Algoritmaif (baru ≠ nil) then
Output(“Data yang akan disisipkan sudah ada”)else
alloc(baru)input(baru↑.info.ID , baru↑.info.Nama , baru↑.info.Tujuan)baru↑.next nilbaru↑.prev nil
endifendprocedure
procedure byk_data(Input awal,akhir : PSimpul, Output n : integer){I.S. : pointer penunuk awal dan penunjuk akhir sudah terdefinisi}{F.S. : menampilkan banyaknya data dalam circular double linked list}
Kamusbykdata : PSimpul
Algoritmabykdata awaln 1while (bykdata ≠ akhir) do
bykdata bykdata↑.nextn n + 1
endwhileendprocedure
procedure sort_asc_c_double(I/O awal, akhir : PSimpul){I.S. : pointer penunjuk awal dan penunjuk akhir sudah terdefinisi}{F.S. : menghasilkan simpul-simpul yang sudah terurut berdasarkan nomor tiket}
Kamusmin, i, j, temp : PSimpul
Algoritmai awal
while (i ≠ akhir) domin ij i↑.next
while (j ≠ akhir) doif (j↑.info.ID < min↑.info.ID) then
min jendifj j↑.next
endwhile
if (j↑.info.ID < min↑.info.ID) thenmin j
endif
temp↑.info i↑.infoi↑.info min↑.infomin↑.info temp↑.info
i i↑.nextendwhile
endprocedure
procedure tampil_data(Input awal,akhir : PSimpul){I.S. : pointer penunjuk awal dan akhir sudah terdefinisi}{F.S. : menampilkan seluruh data ke dalam layar tampilan}
Kamusbantu : PSimpul
Algoritmabantu awalwhile (bantu ≠ akhir) do
Output(bantu↑.info.ID , bantu↑.info.Nama , bantu↑.info.Tujuan)bantu bantu↑.next
endwhile
Output(bantu↑.info.ID , bantu↑.info.Nama , bantu↑.info.Tujuan)endprocedure
procedure hapus_depan_c_double (I/O awal, akhir : PSimpul){I.S. : pointer penunjuk awal dan penunjuk akhir sudah terdefinisi}{F.S. : menghasilkan circular double linked list yang sudah dihapus satu simpul di depan}
Kamusphapus : PSimpul
Algoritmaphapus awal
if (awal = akhir) thenawal nilakhir nil
elseawal awal↑.nextawal↑.prev akhir
endif
dealloc(phapus)endprocedure
procedure hapus_belakang_c_double(I/O awal,akhir : PSimpul){I.S. : pointer penunjuk awal dan penunjuk akhir sudah terdefinisi}{F.S. : menghasilkan circular double linked list yang sudah dihapus satu simpul di belakang}
Kamusphapus : PSimpul
Algoritmaphapus akhirakhir phapus↑.prevdealloc(phapus)akhir↑.next awal
endprocedure
procedure hapus_data(I/O awal, akhir : PSimpul){I.S. : pointer penunjuk awal dan penunjuk akhir sudah terdefinisi}{F.S. : menghasilkan circular double linked list yang sudah dihapus pada simpul depan, tengah atau belakang}
Kamusprocedure byk_data(Input awal,akhir : PSimpul, Output n : integer)procedure hapus_depan_double (I/O awal, akhir : PSimpul)procedure hapus_belakang_double(I/O akhir : PSimpul)procedure tampil_data(Input awal,akhir : PSimpul)
phapus, bantu : PSimpulketemu : booleann, datahapus, posisihapus : integer
Algoritmaif (awal = nil) or (akhir = nil) then
Output(“Tidak ada data yang mau dihapus”)else
if (awal = akhir) thenhapus_depan_c_double(awal,akhir)
elsephapus awalposisihapus 1ketemu falseoutput(“Hapus data di urutan ke -? “)input(datahapus)
byk_data(awal,akhir,n)if (datahapus > n ) then
output(datahapus, “ harus lebih kecil daripada banyaknya data”)else
if (posisihapus = datahapus) thenhapus_depan_c_double(awal,akhir)
elseif (datahapus = n) then
hapus_belakang_c_double(awal,akhir)else
while (not ketemu) doif (datahapus = posisihapus) then
ketemu trueelse
phapus phapus↑.nextposisihapus posisihapus + 1
endif
endwhile
if (ketemu) thenbantu awalwhile (bantu↑.next ≠ phapus) do
bantu bantu↑.nextendwhile
bantu↑.next phapus↑.nextphapus↑.next↑.prev bantudealloc(phapus)
elseoutput(“data urutan ke- “,datahapus, “ tidak ada”)
endifendif
endifendif
endifendif
tampil_data(awal,akhir)endprocedure
procedure sisip_depan_c_double (I/O baru,awal,akhir : PSimpul){I.S. : simpul yang akan disisipkan, pointer penunjuk awal, dan penunjuk akhir sudah terdefinisi}{F.S. : menghasilkan satu simpul yang disisipkan di depan pada circular double linked list}
Kamusprocedure tampil_data(Input awal,akhir : PSimpul)
Algoritmaif (awal = nil) then
baru↑.next nilakhir baru
elsebaru↑.next awalawal↑.prev baru
endif
baru↑.prev nilawal baruawal↑.prev akhirakhir↑.next awalbaru nildealloc(baru)tampil_data(awal,akhir)
endprocedure
procedure sisip_belakang_c_double (I/O baru,awal,akhir : PSimpul){I.S. : simpul yang akan disisipkan, pointer penunjuk awal dan penunjuk akhir sudah terdefinisi}{F.S. : menghasilkan satu simpul yang disisipkan di belakang pada circular double linked list}
Kamusprocedure tampil_data(Input awal,akhir : PSimpul)
Algoritmaakhir↑.next barubaru↑.prev akhirakhir baruakhir↑.next awalbaru nildealloc(baru)tampil_data(awal,akhir)
endprocedure
procedure sisip_tengah_c_double(I/O baru,awal, akhir : PSimpul){I.S. : simpul yang akan disisipkan, pointer penunjuk awal, dan penunjuk akhir sudah terdefinisi}{F.S. : menghasilkan satu simpul yang disisipkan di tengah pada circular double linked list}
Kamusprocedure sisip_depan_c_double (I/O baru,awal,akhir : PSimpul)procedure sisip_belakang_c_double (I/O baru,awal,akhir : PSimpul)procedure tampil_data(Input awal,akhir : PSimpul)
bantu : PSimpulposip : stringpisip : integerketemu : boolean
Algoritma
repeatOutput(“Penyisipan Data”)Output(“=============”)Output(“1. Sebelum Nomor Tiket ke-x ?”)Output (“2. Sesudah Nomor Tiket ke-x ?”)Input(pisip)
Until (pisip = 1) or (pisip = 2)
Output(“x = “)Input(posip)
bantu awalketemu false
while (not ketemu) and (bantu ≠ akhir) doif (bantu↑.info.ID = posip) then
ketemu trueelse
bantu bantu↑.nextendif
endwhile
if (bantu↑.info.ID = posip) thenketemu true
endif
if (pisip = 2) thenif (ketemu) then
if (bantu = akhir) thensisip_belakang_c_double(baru,awal,akhir)
elsebaru↑.next bantu↑.nextbantu↑.next barubaru nildealloc(baru)tampil_data(awal,akhir)
endifelse
output(“Nomor tiket yang dicari “,posip,” tidak ditemukan”)endif
elseif (ketemu) then
if (bantu = awal) thensisip_depan_c_double(baru,awal,akhir)
elsebaru↑.next bantubaru↑.prev bantu↑.prevbaru↑.prev↑.next barubantu↑.prev barubaru nildealloc(baru)tampil_data(awal,akhir)
endifelse
output(“Nomor tiket yang dicari “,posip,” tidak ditemukan”)endif
endifendprocedure
prodecure tambah_data(I/O baru,awal, akhir : PSimpul){I.S. : simpul yang akan disisipkan, pointer penunjuk awal, dan penunjuk akhir sudah terdefinisi}{F.S. : menghasilkan satu simpul yang disisipkan di depan, tengah atau belakang pada circular double linked list}
Kamusprocedure sisip_depan_c_double (I/O baru,awal,akhir : PSimpul)procedure sisip_belakang_c_double (I/O baru,awal,akhir : PSimpul)procedure sisip_tengah_c_double(I/O baru,awal, akhir : PSimpul)
pilihsisip : integer
Algoritmaif (baru = nil) then
output(“Data tidak ada!!! Silakan masukkan data terlebih dahulu”)else
if (awal=nil) thensisip_depan_c_double(baru,awal,akhir)
elseif (awal = akhir) then
repeatoutput(“Menu Sisip”)output(“=========”)output(“1. Sisip Depan”)output(“2. Sisip Belakang”)input(pilihsisip)depend on (pilihsisip)
(pilihsisip = 1) : sisip_depan_c_double(baru,awal,akhir)(pilihsisip = 2) : sisip_belakang_c_double(baru,awal,akhir)
enddependuntil (pilihsisip =1) or (pilihsisip =2)
elserepeat
output(“Menu Sisip”)output(“=========”)output(“1. Sisip Depan”)output(“2. Sisip Tengah”)output(“3. Sisip Belakang”)input(pilihsisip)depend on (pilihsisip)
(pilihsisip = 1) : sisip_depan_c_double(baru,awal,akhir)(pilihsisip = 2) : sisip_tengah_c_double(baru,awal,akhir)(pilihsisip = 3) : sisip_belakang_c_double(baru,awal,akhir)
enddependuntil (pilihsisip =1) or (pilihsisip =2) or (pilihsisip = 3)
endifendif
endifendprocedure
procedure cari_data (Input awal,akhir : PSimpul){I.S. : pointer penunjuk awal dan akhir sudah terdefinisi}{F.S. : menampilkan data yang dicari ada atau tidak}
Kamusbantu : PSimpuldatacari : stringketemu : booleanpilihcari : integer
Algoritmarepeat
output(“Menu Pencarian”)output(“=============”)output(“1. Berdasarkan Nomor Tiket”)output(“2. Berdasarkan Nama”)output(“3. Berdasarkan Tujuan”)input(pilihcari)ketemu falsebantu awalinput(datacari)depend on (pilihcari)
(pilihcari = 1) : repeatif (bantu↑.info.ID = datacari) then
ketemu trueoutput(bantu↑.info.ID, bantu↑.info.Nama , bantu↑.info.Tujuan)
endifbantu bantu↑.next
until (bantu = akhir)
if (bantu↑.info.ID = datacari) thenketemu trueoutput(bantu↑.info.ID, bantu↑.info.Nama , bantu↑.info.Tujuan)
endif(pilihcari = 2) : repeat
if (bantu↑.info.Nama = datacari) thenketemu trueoutput(bantu↑.info.ID, bantu↑.info.Nama , bantu↑.info.Tujuan)
endifbantu bantu↑.next
until (bantu = akhir)
if (bantu↑.info.Nama = datacari) thenketemu trueoutput(bantu↑.info.ID, bantu↑.info.Nama , bantu↑.info.Tujuan)
endif(pilihcari = 3) : repeat
if (bantu↑.info.Tujuan = datacari) thenketemu trueoutput(bantu↑.info.ID, bantu↑.info.Nama , bantu↑.info.Tujuan)
endifbantu bantu↑.next
until (bantu = akhir)
if (bantu↑.info.Tujuan = datacari) thenketemu trueoutput(bantu↑.info.ID, bantu↑.info.Nama , bantu↑.info.Tujuan)
endifenddepend
until (pilihcari = 1) or (pilihcari =2) or (pilihcari =3)
if (not ketemu) thenoutput(datacari,” tidak ditemukan”)
endifendprocedure
{Algoritma Utama}Algoritma_Double_Linked_List
Kamus{prototype}procedure input_data(Output baru : PSimpul)procedure sort_asc_double(I/O awal, akhir : PSimpul)procedure tampil_data(Input awal,akhir : PSimpul)procedure hapus_data(I/O awal, akhir : PSimpul)prodecure tambah_data(I/O baru,awal, akhir : PSimpul)procedure cari_data (Input awal,akhir : PSimpul)
typePSr = record
< ID : string,Nama : string,Tujuan : string>
endrecord
typePSimpul = ↑simpulsimpul = record
< info : PSr,prev, next : PSimpul>
endrecord
phapus, baru, awal, akhir : PSimpuln, menu : integer
Algoritma{penciptaan list}awal nilakhir nil
repeatoutput(“menu pilihan”)output(“==========”)output(“1. Isi Data”)output(“2. Tambah Data”)output(“3. Hapus Data”)output(“4. Cari Data”)output(“5. Tampil Data”)output(“6. Keluar”)input(menu)depend on (menu)
(menu = 1) : input_data(baru)(menu = 2) : tambah_data(baru,awal,akhir)(menu = 3) : hapus_data(awal,akhir)(menu = 4) : cari_data(awal,akhir)(menu = 5) : sort_asc_c_double(awal,akhir)
tampil_data(awal,akhir)enddepend
until (menu = 6)
{penghancuran data}phapus awalwhile (phapus ≠ akhir) do
awal awal↑.nextdealloc(phapus)phapus awal
endwhileakhir nilawal nildealloc(phapus)
SOURCE CODEprogram Circular_Double_Linked_List;
uses crt;
type PSr = record ID : string; Nama : string; Tujuan : string; end;
type PSimpul = ^simpul; simpul = record info : PSr; prev,next : PSimpul; end;
label return;
var phapus, baru, awal, akhir : PSimpul; menu : integer;
procedure byk_data(var n : integer; aw, ak : PSimpul); var bykdata : PSimpul; begin bykdata := aw; n := 1; while (bykdata <> ak) do begin bykdata := bykdata^.next; n := n + 1; end; end;
procedure sort_asc_c_double(var aw, ak : PSimpul); var min, i, j, temp : PSimpul; begin new(temp); i := aw; while (i <> ak) do begin min := i;
j := i^.next;
while (j <> ak) do begin if (j^.info.ID < min^.info.ID) then min := j;
j := j^.next; end;
if (j^.info.ID < min^.info.ID) then min := j;
temp^.info := i^.info; i^.info := min^.info; min^.info := temp^.info;
i := i^.next end; end;
procedure tampil_data(var aw,ak : PSimpul); var bantu : PSimpul; i : integer; begin clrscr; bantu := aw; gotoxy(20,2); writeln('====================================='); gotoxy(20,3); writeln(' Data Yang Tersimpan '); gotoxy(20,4); writeln('====================================='); writeln; i := 1;
while (bantu <> ak) do begin gotoxy(11,7+i); write('- {',bantu^.info.ID); write('} , {',bantu^.info.Nama); writeln('} , {',bantu^.info.Tujuan,'}'); bantu := bantu^.next; i:=i+1; end;
gotoxy(11,7+i);
write('- {',bantu^.info.ID); write('} , {',bantu^.info.Nama); writeln('} , {',bantu^.info.Tujuan,'}');
readln; end;
procedure hapus_depan_c_double(var aw,ak : PSimpul); var elemen,phapus : PSimpul; begin new(elemen); phapus := aw; if (aw = ak) then begin aw := nil; ak := nil; end else begin aw := aw^.next; aw^.prev := ak; end; elemen^.info := phapus^.info; dispose(phapus); dispose(elemen); end;
procedure hapus_belakang_c_double(var aw,ak : PSimpul); var elemen,phapus : PSimpul; begin new(elemen); phapus := ak; ak := phapus^.prev; elemen^.info := phapus^.info; dispose(phapus); dispose(elemen); ak^.next := aw; end;
procedure hapus_data(var aw, ak: PSimpul); var phapus,bantu : PSimpul; ketemu : boolean;
n, datahapus, posisihapus : integer; begin clrscr; if (aw = nil) or (ak = nil) then begin writeln('Tidak ada Data'); end else if (aw = ak) then begin hapus_depan_c_double(aw,ak); writeln('Data ke-1 berhasil dihapus'); end else begin phapus := aw; posisihapus := 1; ketemu := false; gotoxy(20,2); writeln('=============================='); gotoxy(20,3); writeln(' Penghapusan Data '); gotoxy(20,4); writeln('=============================='); gotoxy(23,6); write('Hapus Data di urutan ke-? '); readln(datahapus);
byk_data(n, aw, ak);
if (datahapus > n) then begin writeln('urutan Data tersebut harus lebih kecil dari banyaknya data'); end else if (posisihapus = datahapus) then begin hapus_depan_c_double(aw,ak); writeln('Data urutan ke-',datahapus,' berhasil dihapus'); end else if (datahapus = n) then begin hapus_belakang_c_double(aw,ak); writeln('Data urutan ke-',datahapus,' berhasil dihapus'); end else begin while (not ketemu) do begin if (datahapus = posisihapus) then begin
ketemu := true; end else begin phapus := phapus^.next; posisihapus := posisihapus + 1; end; end;
if (ketemu) then begin bantu := aw;
while (bantu^.next <> phapus) do bantu := bantu^.next;
bantu^.next := phapus^.next; phapus^.next^.prev := bantu; dispose(phapus);
writeln; writeln('Data urutan ke-',datahapus,' berhasil dihapus'); end else begin writeln; writeln('Data urutan ke-',datahapus,' tidak ada'); end; end; end; readln; tampil_data(awal,akhir); end;
procedure sisip_depan_c_double(var baru, aw, ak : PSimpul); begin if (aw = nil) then begin baru^.next := nil; ak := baru; end else begin baru^.next := aw; aw^.prev := baru;
end;
baru^.prev := nil; aw := baru; aw^.prev := ak; ak^.next := aw; clrscr; writeln('Data berhasil ditambah..!'); baru := nil; dispose(baru); readln; tampil_data(awal,akhir); end;
procedure sisip_belakang_c_double(var baru, aw, ak : PSimpul); begin ak^.next := baru; baru^.prev := ak; ak := baru; ak^.next := aw; clrscr; writeln('Data berhasil ditambah..!'); baru := nil; dispose(baru); readln; tampil_data(awal,akhir); end;
procedure sisip_tengah_c_double(var baru, aw, ak : PSimpul); var bantu : PSimpul; posip : string; pisip : integer; ketemu : boolean; begin clrscr; gotoxy(20,2); writeln('=========================='); gotoxy(20,3); writeln(' Penyisipan Data '); gotoxy(20,4); writeln('=========================='); gotoxy(6,6); write('1. Sebelum Nomor Tiket ke-x ? '); gotoxy(6,7); write('2. Sesudah Nomor Tiket ke-x ? '); gotoxy(6,9); write('Pilih : '); readln(pisip); gotoxy(6,10); write('x = '); readln(posip);
bantu := aw; ketemu := false;
while (not ketemu) and (bantu <> ak) do begin if (bantu^.info.ID = posip) then ketemu:= true else bantu := bantu^.next; end;
if (bantu^.info.ID = posip) then ketemu:= true;
if (pisip = 2) then begin if (ketemu) then begin if (bantu = ak) then begin sisip_belakang_c_double(baru,aw,ak); end else begin baru^.next := bantu^.next; bantu^.next := baru; clrscr; writeln('Data berhasil ditambah..!'); baru := nil; dispose(baru); readln; tampil_data(awal,akhir); end; end else begin clrscr; writeln('Nomor tiket yang dicari tidak ditemukan!'); readln; end; end else begin if (ketemu) then
begin if (bantu=aw) then sisip_depan_c_double(baru,aw,ak) else begin baru^.next := bantu; baru^.prev := bantu^.prev; baru^.prev^.next := baru; bantu^.prev := baru; clrscr; writeln('Data berhasil ditambah..!'); baru := nil; dispose(baru); readln; tampil_data(awal,akhir); end; end else begin clrscr; writeln('Nomor tiket yang dicari tidak ditemukan!'); readln; end; end; end;
procedure tambah_data(var baru, aw, ak : PSimpul); var pilihsisip : integer; begin if (baru = nil) then begin clrscr; gotoxy (7,1); write('=============================================================='); gotoxy (7,2); write(' UNIKOM TRAIN COMPANY '); gotoxy (7,3); write('=============================================================='); gotoxy (20,5); writeln('Data tidak ada'); gotoxy (20,6); writeln('Silakan Masukkan Data terlebih dahulu'); readln; goto return; end else if (aw = nil) then begin sisip_depan_c_double(baru,aw,ak);
end else if (aw = ak) then begin clrscr; repeat gotoxy(20,2); writeln('=========================='); gotoxy(20,3); writeln(' Menu Penyisipan '); gotoxy(20,4); writeln('=========================='); gotoxy(20,5); writeln('1. Sisip Depan'); gotoxy(20,6); writeln('2. Sisip Belakang'); gotoxy(20,8); write('Pilih : ');readln(pilihsisip); until (pilihsisip = 1) or (pilihsisip = 2);
if pilihsisip = 1 then sisip_depan_c_double(baru, aw, ak); if pilihsisip = 2 then sisip_belakang_c_double(baru,aw,ak); end else begin clrscr; repeat gotoxy(20,2); writeln('=========================='); gotoxy(20,3); writeln(' Menu Penyisipan '); gotoxy(20,4); writeln('=========================='); gotoxy(20,5); writeln('1. Sisip Depan'); gotoxy(20,6); writeln('2. Sisip Tengah'); gotoxy(20,7); writeln('3. Sisip Belakang'); gotoxy(20,9); write('Pilih : ');readln(pilihsisip); until (pilihsisip = 1) or (pilihsisip = 2) or (pilihsisip = 3);
if pilihsisip = 1 then sisip_depan_c_double(baru, aw, ak); if pilihsisip = 2 then sisip_tengah_c_double(baru, aw, ak); if pilihsisip = 3 then sisip_belakang_c_double(baru, aw, ak); end; end;
procedure input_data (var baru : PSimpul); var ID, Nama, Tujuan : string; begin clrscr; if baru <> nil then begin writeln('Data yg mau di-input sudah ada'); readln;
end else begin new(baru); clrscr; gotoxy(20,2); writeln('====================================='); gotoxy(20,3); writeln(' Input Data Konsumen '); gotoxy(20,4); writeln('====================================='); gotoxy(23,6); write('NOMOR TIKET = '); readln (ID); gotoxy(23,7); write('Nama = '); readln (Nama); gotoxy(23,8); write('Tujuan = '); readln (Tujuan);
baru^.info.ID := ID; baru^.info.Nama := Nama; baru^.info.Tujuan := Tujuan;
baru^.next := nil; baru^.prev := nil; end; end;
procedure cari_data(var aw,ak : PSimpul); var bantu : PSimpul; datacari : string; ketemu : boolean; pilihcari, i : integer; begin repeat clrscr; gotoxy(20,2); writeln('============================'); gotoxy(20,3); writeln(' Menu Pencarian '); gotoxy(20,4); writeln('============================'); gotoxy(20,6); write('1. Berdasarkan Nomor Tiket'); gotoxy(20,7); write('2. Berdasarkan Nama'); gotoxy(20,8); write('3. Berdasarkan Tujuan'); gotoxy(20,9); write('Pilih : ');readln(pilihcari); until (pilihcari = 1) or (pilihcari = 2) or (pilihcari = 3);
clrscr; gotoxy(20,2); writeln('============================'); gotoxy(20,3); writeln(' Data Pencarian '); gotoxy(20,4); writeln('============================');
ketemu := false;
bantu := aw; i := 0;
if (pilihcari = 1) then begin gotoxy(20,6); write('Nomor Tiket yang dicari : '); readln(datacari);
gotoxy(20,10); writeln('============================'); gotoxy(20,11); writeln(' Hasil Pencarian '); gotoxy(20,12); writeln('============================');
repeat if (bantu^.info.ID = datacari) then begin ketemu := true; gotoxy(20,14+i); write('- {',bantu^.info.ID); write('} , {',bantu^.info.Nama); writeln('} , {',bantu^.info.Tujuan,'}'); i := i + 1; end;
bantu := bantu^.next; until (bantu = ak);
if (bantu^.info.ID = datacari) then begin ketemu := true; gotoxy(20,14+i); write('- {',bantu^.info.ID); write('} , {',bantu^.info.Nama); writeln('} , {',bantu^.info.Tujuan,'}'); end;
if (not ketemu) then begin gotoxy(20,14); write(datacari, ' tidak ditemukan'); end; end;
if pilihcari = 2 then begin gotoxy(20,6); write('Nama yang dicari : '); readln(datacari);
gotoxy(20,10); writeln('============================'); gotoxy(20,11); writeln(' Hasil Pencarian '); gotoxy(20,12); writeln('============================');
repeat if (bantu^.info.Nama = datacari) then begin ketemu := true; gotoxy(20,14+i); write('- {',bantu^.info.ID); write('} , {',bantu^.info.Nama); writeln('} , {',bantu^.info.Tujuan,'}'); i := i + 1; end;
bantu := bantu^.next; until (bantu = ak);
if (bantu^.info.Nama = datacari) then begin ketemu := true; gotoxy(20,14+i); write('- {',bantu^.info.ID); write('} , {',bantu^.info.Nama); writeln('} , {',bantu^.info.Tujuan,'}'); end;
if (not ketemu) then begin gotoxy(20,14); write(datacari, ' tidak ditemukan'); end; end;
if pilihcari = 3 then begin gotoxy(20,6); write('Tujuan yang dicari : '); readln(datacari);
gotoxy(20,10); writeln('============================'); gotoxy(20,11); writeln(' Hasil Pencarian '); gotoxy(20,12); writeln('============================'); repeat if (bantu^.info.Tujuan = datacari) then begin ketemu := true; gotoxy(20,14+i);
write('- {',bantu^.info.ID); write('} , {',bantu^.info.Nama); writeln('} , {',bantu^.info.Tujuan,'}'); i := i + 1; end;
bantu := bantu^.next; until (bantu = ak);
if (bantu^.info.Tujuan = datacari) then begin ketemu := true; gotoxy(20,14+i); write('- {',bantu^.info.ID); write('} , {',bantu^.info.Nama); writeln('} , {',bantu^.info.Tujuan,'}'); end;
if (not ketemu) then begin gotoxy(20,14); write(datacari, ' tidak ditemukan'); end; end;
readln; end;
begin awal := nil; akhir := nil; return: repeat clrscr; gotoxy (7,1); write('==============================================================='); gotoxy (7,2); write(' UNIKOM TRAIN COMPANY '); gotoxy (7,3); write('==============================================================='); gotoxy(28,5); write('====== PILIHAN MENU ====='); gotoxy(28,8); write('1. ISI DATA'); gotoxy(28,9); write('2. TAMBAH DATA'); gotoxy(28,10); write('3. HAPUS DATA'); gotoxy(28,11); write('4. CARI DATA'); gotoxy(28,12); write('5. TAMPIL DATA'); gotoxy(28,13); write('6. KELUAR'); gotoxy(28,15); write('Pilih : '); readln(menu);
if menu = 1 then input_data(baru); if menu = 2 then tambah_data(baru, awal,akhir); if menu = 3 then hapus_data(awal,akhir); if menu = 5 then begin sort_asc_c_double(awal,akhir); tampil_data(awal,akhir); end; if menu = 4 then cari_data(awal,akhir); until (menu = 6);
{penghancuran data} phapus := awal; while (phapus <> akhir) do begin awal := awal^.next; dispose(phapus); phapus := awal; end;
akhir := nil; awal := nil; dispose(phapus);end.
Daftar Kontribusi1. Pratama Putra Effendi 10111093 Algoritma input, cari data2. Muhammad Rikat Rifaldi 10111103 Algoritma sort, tampil data3. Riswan Panji Pratomo 10111939 Coding4. Andrew Christie Tooy 10111931 Algoritma sisip, hapus data