Anda di halaman 1dari 9

Nama : Niluh Elva Alvionita

Nim : F1A220050
Prodi : S1-Statistika
Tugas 4 Struktur Data

Soal:
1. Buatlah sebuah Double Linked List yang berisi nim anda dan nama lengkap anda.
2. Buat fungsi untuk menambahkan Double Linked List dimana tiap node
mengandung informasi nim dan nama. Peletakan posisi node urut berdasar nim
secara ascending, jadi bisa tambah depan, belakang maupun tambah di tengah.
Isikan data nim dan nama lengkap teman sebelah kiri dan kanan anda!
3. Buatlah fungsi untuk menampilkan data 3 buah node yang telah anda bentuk
sebelumnya. Contoh tampilan
NIM Nama Lengkap
99071001 Malecita
00071022 Nohan
05071078 Salsabila
Jawab:
1. Program Double Linked List yang berisi nim anda dan nama lengkap ialah
sebagai berikut:
Program:
Program niluh_1;
uses crt;
type
node =^data;
data =record
nim :string;
nama :string;
prodi:string;
kelas:string;
umur :integer;
kiri,kanan :node;
end;
var
baru,bantu,ptr :node;
i :integer;
jwb :char;
umur :integer;
nama,nim,prodi,kelas :string;

procedure input(var
p:pointer;nim:string;nama:string;prodi:string;kelas:strin
g;umur:integer);
begin
new(baru);
baru^.nim :=nim;
baru^.nama:=nama;
baru^.prodi:=prodi;
baru^.kelas:=kelas;
baru^.umur:=umur;
baru^.kiri:=nil;
baru^.kanan:=nil;
if p=nil then
p:=baru
else begin
baru^.kiri:=p;
baru^.kanan:=p;
p:=baru;
end;
end;

procedure output(p:pointer);
begin
bantu:=p;
i:=1;
while bantu<>nil do
begin
writeln('Data ke-',i);
writeln(' NIM : ',bantu^.nim);
writeln(' Nama : ',bantu^.nama);
writeln(' Program Studi : ',bantu^.prodi);
writeln(' Kelas : ',bantu^.kelas);
writeln(' Umur : ',bantu^.umur);
bantu:=bantu^.kiri;
bantu:=bantu^.kanan;
i:=i+1;
end;
end;

begin
clrscr;

new(ptr);
ptr:=nil;
jwb:='Y';
writeln('++++++++++++++++++++++++++++++++++');
writeln('++++++ Program Data Diri ++++++');
writeln('++++++ DOUBLE LINKED LIST ++++++');
writeln('++++++++++++++++++++++++++++++++++');
writeln;
writeln('Input');
while jwb='Y' do
begin
write ('Input NIM : ');readln(nim);
write ('Input Nama : ');readln(nama);
write ('Input Program Studi : ');readln(prodi);
write ('Input Kelas : ');readln(kelas);
write ('Input Umur : ');readln(umur);
input(ptr,nim,nama,prodi,kelas,umur);
write ('Lagi [Y/T] : ');jwb:=upcase(readkey);
writeln(jwb);
writeln;
end;
writeln('Output');
output(ptr);
readkey;
end.

Output:

2. Membuat fungsi untuk menambahkan Double Linked List dimana tiap node
mengandung informasi nim dan nama.
Program:
Program niluh_2;
uses crt;
const garis='-----------------------';
pesan='Double linked list';
type simpul=^data;
data=record
nama:string[20];
nim:string;
elemen:simpul;
next:simpul;
end;
var
awal,akhir,baru,list,bantu:simpul;
pil:char;
cacah,a,k,posisi:integer;

function menu:char;
var b:char;
begin
clrscr;
writeln('Dibuat Oleh Niluh Elva Alvionita');
writeln('++++++++++++++++++');
writeln(' Menu ');
writeln('++++++++++++++++++');
writeln;
writeln('1. Tambah awal ');
writeln('2. Tambah akhir ');
writeln('3. Tambah tengah ');
writeln('4. Baca isi Double Linked List');
writeln('5. keluar ');
repeat

write('':10);
write('pilih salah satu:');
b:=upcase(readkey);
until b in ['1'..'5'];
menu:= b;
end;

function simpulbaru:simpul;
var b:simpul;
begin
new(b);
with b^ do
begin
write('Masukkan Nama: ');readln(nama);
write('Masukkan Nim : ');readln(nim);
next:=nil;
end;
simpulbaru:=b;
end;

procedure tambahdepan(a:integer);
var awal,akhir,baru:simpul;

begin
if a<>0 then
begin
writeln('Menambah Simpul Baru di Awal');
end;
writeln;
baru:=simpulbaru;
if awal=nil then
akhir:=baru
else
baru^.next:=awal;
awal:=baru;
end;

procedure tambahakhir(a:integer);
var baru,awal,akhir:simpul;
begin
if a<>0 then
begin
writeln('Menambahkan Simpul Di Belakang');
end;
writeln;
baru:=simpulbaru;
if awal=nil then
awal:=baru
else
akhir^.next:=baru;
akhir:=baru;
end;

procedure tambahtengah;
var baru,bantu,awal,akhir:simpul;
posisi,a:integer;
begin
writeln('Menambah Simpul Baru Ditengah');
writeln;
writeln(' double linked list berisi:',cacah:2,'simpul');
repeat
writeln('');
writeln('simpul baru akan di tempatkan sebagai simpul
nomor:');readln(posisi)
until posisi in [1..cacah+1];
if posisi=1 then
tambahdepan(0)
else
if posisi=cacah+1 then
tambahakhir(0)
else
begin
writeln;
baru:=simpulbaru;
bantu:=awal;
for a:=1 to posisi-2 do
bantu:=bantu^.next;
baru^.next:=bantu^.next;
bantu^.next:=baru;
end;
end;

procedure baca(k:integer);
var awal,akhir,bantu:simpul;
begin
k:=1;
writeln('baca isi double linked list yang tersimpan');
writeln('tekan <>untuk kembali ke menu utama');
writeln;
bantu:=awal;
if bantu=nil then
writeln(pesan)
else
while bantu<>nil do
begin
writeln('simpul:',k:2,'--> Nama:',bantu^.nama);
writeln('simpul:',k:2,'--> Nim :',bantu^.nim);
bantu:=bantu^.next;
inc(k);
writeln;
end;
repeat until keypressed
end;
begin
cacah:=0;
awal:=nil;
akhir:=nil;
repeat
pil:=menu;
clrscr;
case pil of
'1': begin
if a<>0 then
begin
writeln('Menambah Simpul Baru di Awal');
end;
writeln;
baru:=simpulbaru;
if awal=nil then
akhir:=baru
else
baru^.next:=awal;
awal:=baru;
end;
'2': begin
if a<>0 then
begin
writeln('Menambahkan Simpul Di Belakang');
end;
baru:=simpulbaru;
if awal=nil then
awal:=baru
else
akhir^.next:=baru;
akhir:=baru;
end;
'3':begin
writeln;
baru:=simpulbaru;
bantu:=awal;
for a:=1 to posisi-2 do
bantu:=bantu^.next;
baru^.next:=bantu^.next;
bantu^.next:=baru;
end;
'4': begin
k:=1;
writeln('baca isi linked list yang tersimpan');
writeln('tekan <>untuk kembali ke menu utama');
writeln;
bantu:=awal;
if bantu=nil then
writeln(pesan)
else
while bantu<>nil do
begin
writeln('simpul:',k:2,'--> Nama:',bantu^.nama);
writeln('simpul:',k:2,'--> Nim :',bantu^.nim);
bantu:=bantu^.next;
inc(k);
writeln;
end;
repeat until keypressed
end;
end;
if pil in['1','2','3','4']then inc(cacah)
until(pil>='5');
end.
Output:

3. Membuat fungsi untuk menampilkan data 3 buah node ialah sebagai berikut:
Program:
Program Niluh_3;
uses crt;

type mahasiswa=record
nama,nim:string;

end;
B=array [1..200] of mahasiswa;
var
i,j,N:integer;
A:B;
begin
clrscr;
write('Banyak mahasiswa = ');readln(n);
for i:=1 to n do
begin
clrscr;
write('Nama Mahasiswa ke ',i,' : ');readln(A[i].nama);
write('NIM Mahasiswa ke ',i,' : ');readln(A[i].nim);
end;
begin
clrscr;
writeln;
writeln('Dibuat Oleh Niluh Elva Alvionita');
writeln('########## DAFTAR NAMA MAHASISWA ##########');
writeln('########## PROGRAM STUDI STATISTIKA ##########');
writeln('++++++++++++++++++++++++++++++++++++++++');
writeln('++++ NIM NAMA ++++');
writeln('++++++++++++++++++++++++++++++++++++++++');
for j:=1 to n do
begin
writeln(A[j].nim:5,A[j].nama:20);
end;
writeln('+++++++++++++++++++++++++++++++++++++++++');
readkey;
end;
end.

Output:

Anda mungkin juga menyukai