1. Nama : Renny Dwi Yuni A
Kelas : 2B – Sore
Nim : 12108000076
PROGRAM UTAMA
PROGRAM LinkedList1;
Uses Wincrt;
CONST
Header ='------------ Menu Utama ------------';
Separator ='------------------------------------';
TYPE
DataString = STRING[30];
ListPointer = ^ListRecord;
ListRecord = RECORD
DataField : DataString;
NextField : ListPointer
END;
VAR FirstPointer : ListPointer;
PROCEDURE BuildList(VAR FirstPointer : ListPointer;
DataItem : DataString);
VAR
ToolPointer : ListPointer;
BEGIN
NEW(ToolPointer);
ToolPointer^.DataField := DataItem;
ToolPointer^.NextField := FirstPointer;
FirstPointer:=ToolPointer
END;
PROCEDURE ReadList (FirstPointer : ListPointer);
VAR CurrentPointer : ListPointer;
BEGIN
CurrentPointer := FirstPointer;
WHILE CurrentPointer <> NIL DO
BEGIN
WRITELN(CurrentPointer^.DataField);
CurrentPointer := CurrentPointer^.NextField
END;
WRITELN
END;
PROCEDURE GetData(VAR FirstPointer:ListPointer);
VAR Name:DataString;
BEGIN
WRITELN('Masukkan nama yang akan ditambahkan lalu tekan
ENTER jika selesai.');
READLN(Name);
WHILE LENGTH(Name) <> 0 DO
BEGIN
BuildList(FirstPointer,Name); READLN(Name)
END
END;
KONSEP
Deklarasi Type sebuah Program Lifo
ListPointer = Pointer
ListRecord = RecPoint
DataField = Isi
FirstPointer = Head
ToolPointer = Now
Begin
New(Now);
Now^.Isi := Elemen;
Now^.Next := Head;
Head := Now;
End;
CurrentPointer = Now
Begin
Now := Head;
while Now <> nil do
begin
writeln (Now^.Isi);
Now := Now^.next
end;
writeln
end;
Procedure Menginputkan Data
2. PROCEDURE DisplayInfo(FirstPointer:ListPointer);
BEGIN
WRITELN(Separator);
WRITELN('Isi dari daftar:');
ReadList(FirstPointer);
WRITE('Tekan sembarang tombol untuk lanjut...');
READLN
END;
PROCEDURE Cetak(firstpointer:listPointer);
var posisi:text;
CurrentPointer : ListPointer;
begin
assign(posisi,'dafnama.txt');
rewrite(posisi);
writeln(posisi,'Tertulis dengan Indah sebagai berikut :');
writeln(posisi);
Writeln(posisi,separator);
Writeln(posisi,'Isi dari daftar');
writeln(posisi);
CurrentPointer := FirstPointer;
WHILE CurrentPointer <> NIL DO
BEGIN
WRITELN(posisi,CurrentPointer^.DataField);
CurrentPointer := CurrentPointer^.NextField
END;
writeln;
writeln('Data telah di tulis ke dafnama.txt, tinggal di lihat
saja...');
readln;
close(posisi);
end;
PROCEDURE Menu;
VAR Option : INTEGER;
BEGIN
WRITELN(Header);
WRITELN('1. Simpan data pada daftar.');
WRITELN('2. Tampilan daftar.');
Writeln('3. Tulis data ke teks ');
WRITELN('4. Keluar.');
WRITELN(Separator);
WRITE('Pilihan --> ');
READLN(Option);
CASE Option OF
1 : GetData(FirstPointer);
2 : DisplayInfo(FirstPointer);
3 : cetak(firstpointer);
4 : exit;
END;
Menu
END;
BEGIN
FirstPointer := NIL;
menu
END.
Procedure Menampilkan Hasil Inputan / Data
Prosedure Mengalamatkan Hasil Program ke format .txt
Assign (posisi,’dafnama.txt’);
Now := Head
While Now <> Nil do
Begin
Writeln (posisi,Now.^Isi);
Now := Now^.Next
End;
Note:
Program diatas merupakan format penulisan di notepad
sama dengan procedure ReadList untuk Find First dan
Find Next
Membuat Tampilan Menu Bar Pada Hasil
CASE Option OF
1 : GetData(FirstPointer);
2 : DisplayInfo(FirstPointer);
3 : cetak(firstpointer);
4 : exit;
Untuk Memanggil Procedure-Procedure untuk
menjalankan Menu
Bagian Program Utama !