Anda di halaman 1dari 30

2012

TUGAS V STRUKTUR DATA


Create, Insert, Delete, Search, Sort, Destroy
Circular Double Linked List DATA PEMILIK TIKET KERETA

Mata Kuliah Struktur Data Disusun Oleh Kelompok 8 :

1. 2. 3. 4.

Pratama Putra Effendi Muhammad Rikat Rifaldi Riswan Panji Pratomo Andrew Christie Tooy

10111093 10111103 10111939 10111931

Kelas : IF-3 Jurusan Teknik Informatika UNIVERSITAS KOMPUTER INDONESIA 2012

PSEUDOCODE
procedure 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 Algoritma if (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 nil baru.prev nil endif endprocedure

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} Kamus bykdata : PSimpul Algoritma bykdata awal n1 while (bykdata akhir) do bykdata bykdata.next nn+1 endwhile endprocedure

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} Kamus min, i, j, temp : PSimpul Algoritma i awal while (i akhir) do min i j i.next while (j akhir) do if (j.info.ID < min.info.ID) then min j endif j j.next endwhile if (j.info.ID < min.info.ID) then min j endif temp.info i.info i.info min.info min.info temp.info i i.next endwhile 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} Kamus bantu : PSimpul Algoritma bantu awal while (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} Kamus phapus : PSimpul Algoritma phapus awal if (awal = akhir) then awal nil akhir nil else awal awal.next awal.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} Kamus phapus : PSimpul Algoritma phapus akhir akhir phapus.prev dealloc(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} Kamus procedure 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 : PSimpul ketemu : boolean n, datahapus, posisihapus : integer Algoritma if (awal = nil) or (akhir = nil) then Output(Tidak ada data yang mau dihapus) else if (awal = akhir) then hapus_depan_c_double(awal,akhir) else phapus awal posisihapus 1 ketemu false output(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) then hapus_depan_c_double(awal,akhir) else if (datahapus = n) then hapus_belakang_c_double(awal,akhir) else while (not ketemu) do if (datahapus = posisihapus) then ketemu true else phapus phapus.next posisihapus posisihapus + 1 endif

endwhile if (ketemu) then bantu awal while (bantu.next phapus) do bantu bantu.next endwhile bantu.next phapus.next phapus.next.prev bantu dealloc(phapus) else output(data urutan ke- ,datahapus, tidak ada) endif endif endif endif endif endif 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} Kamus procedure tampil_data(Input awal,akhir : PSimpul) Algoritma if (awal = nil) then baru.next nil akhir baru else baru.next awal awal.prev baru endif baru.prev nil awal baru awal.prev akhir akhir.next awal baru nil dealloc(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} Kamus procedure tampil_data(Input awal,akhir : PSimpul) Algoritma akhir.next baru baru.prev akhir akhir baru akhir.next awal baru nil dealloc(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} Kamus procedure 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 : PSimpul posip : string pisip : integer ketemu : boolean Algoritma repeat Output(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 awal ketemu false while (not ketemu) and (bantu akhir) do if (bantu.info.ID = posip) then ketemu true else bantu bantu.next endif endwhile if (bantu.info.ID = posip) then ketemu true endif if (pisip = 2) then if (ketemu) then if (bantu = akhir) then sisip_belakang_c_double(baru,awal,akhir)

else baru.next bantu.next bantu.next baru baru nil dealloc(baru) tampil_data(awal,akhir) endif else output(Nomor tiket yang dicari ,posip, tidak ditemukan) endif else if (ketemu) then if (bantu = awal) then sisip_depan_c_double(baru,awal,akhir) else baru.next bantu baru.prev bantu.prev baru.prev.next baru bantu.prev baru baru nil dealloc(baru) tampil_data(awal,akhir) endif else output(Nomor tiket yang dicari ,posip, tidak ditemukan) endif endif endprocedure

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} Kamus procedure 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 Algoritma if (baru = nil) then output(Data tidak ada!!! Silakan masukkan data terlebih dahulu) else if (awal=nil) then sisip_depan_c_double(baru,awal,akhir) else if (awal = akhir) then repeat output(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) enddepend until (pilihsisip =1) or (pilihsisip =2) else repeat 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) enddepend until (pilihsisip =1) or (pilihsisip =2) or (pilihsisip = 3)

endif endif endif endprocedure

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} Kamus bantu : PSimpul datacari : string ketemu : boolean pilihcari : integer Algoritma repeat output(Menu Pencarian) output(=============) output(1. Berdasarkan Nomor Tiket) output(2. Berdasarkan Nama) output(3. Berdasarkan Tujuan) input(pilihcari) ketemu false bantu awal input(datacari) depend on (pilihcari) (pilihcari = 1) : repeat if (bantu.info.ID = datacari) then ketemu true output(bantu.info.ID, bantu.info.Nama , bantu.info.Tujuan) endif bantu bantu.next until (bantu = akhir) if (bantu.info.ID = datacari) then ketemu true output(bantu.info.ID, bantu.info.Nama , bantu.info.Tujuan) endif repeat if (bantu.info.Nama = datacari) then ketemu true output(bantu.info.ID, bantu.info.Nama , bantu.info.Tujuan) endif bantu bantu.next until (bantu = akhir) if (bantu.info.Nama = datacari) then ketemu true output(bantu.info.ID, bantu.info.Nama , bantu.info.Tujuan)

(pilihcari = 2)

(pilihcari = 3)

endif repeat if (bantu.info.Tujuan = datacari) then ketemu true output(bantu.info.ID, bantu.info.Nama , bantu.info.Tujuan) endif bantu bantu.next until (bantu = akhir) if (bantu.info.Tujuan = datacari) then ketemu true output(bantu.info.ID, bantu.info.Nama , bantu.info.Tujuan) endif

enddepend until (pilihcari = 1) or (pilihcari =2) or (pilihcari =3) if (not ketemu) then output(datacari, tidak ditemukan) endif endprocedure

{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)

type PSr = record < ID : string, Nama : string, Tujuan : string> endrecord type PSimpul = simpul simpul = record < info : PSr, prev, next : PSimpul> endrecord phapus, baru, awal, akhir : PSimpul n, menu : integer

Algoritma {penciptaan list} awal nil akhir nil repeat output(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 awal while (phapus akhir) do awal awal.next dealloc(phapus) phapus awal endwhile akhir nil awal nil dealloc(phapus)

SOURCE CODE
program 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 Kontribusi
1. 2. 3. 4. Pratama Putra Effendi Muhammad Rikat Rifaldi Riswan Panji Pratomo Andrew Christie Tooy 10111093 10111103 10111939 10111931 Algoritma input, cari data Algoritma sort, tampil data Coding Algoritma sisip, hapus data

Anda mungkin juga menyukai