5 Feb 2015

Double Link list Insert Before pascal

Insert Before
Insert ini menambah simpul di sebelah kiri (depan) pada sebuah double link list. Untuk membuat Out put FIFO / LIFO digunakan algoritma seperti di atas.

program P_dobelLink;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
   point = ^recKar ;
   reckar = record
              id_mhs : string ;
              nama : string ;
              prodi : string ;
              semester : integer ;
              next,prev : point;
            end;
var
  head,now,tail : point ;
  jawab : char ;
  no : byte ;

procedure insertBefore ;  // insert before
begin
new(now);
if head = nil then
  begin
    head := now ;
    now^.next := nil ;
    now^.prev := nil ;
  end
else
  begin
    head^.prev := now  ;
    now^.next := head ;
    head := now ;
    head^.prev := nil ;
  end;
end;

begin
  writeln('DATA MAHASISWA');
  writeln('__________________________');
  writeln ;
  repeat
    insert After
      write('ID MAHASISWA :'); readln(now^.id_mhs);
      write('NAMA :'); readln(now^.nama);
      write('PRODI :'); readln(now^.prodi);
      write('SEMESTER :'); readln(now^.semester);
      writeln ;
      write('Apakah ingin isi data lagi (Y/T)?  ');readln(jawab);
      writeln ;
  until upcase(jawab) ='T' ;
  writeln ;
  writeln('DATA MAHASISWA');
  writeln('__________________________');
  writeln ;
  no := 1 ;
  now := tail ; 
  while now <> nil do
    begin
      writeln (No,'. ID MAHASISWA :',Now^.id_mhs) ;
      writeln ('   NAMA :',Now^.nama) ;
      writeln ('   PRODI :',Now^.prodi) ;
      writeln ('   SEMESTER :',Now^.semester) ;
      writeln ;
      inc(no) ;   
      now := now^.prev ;  
    end;
readln ;
end;

Pembuatan output FIFO / LIFO terletak pada perintah berikut :

FIFO
  no := 1 ;
  now := head ; 
  while now <> nil do
    begin
      writeln (No,'. ID MAHASISWA :',Now^.id_mhs) ;
      writeln ('   NAMA :',Now^.nama) ;
      writeln ('   PRODI :',Now^.prodi) ;
      writeln ('   SEMESTER :',Now^.semester) ;
      writeln ;
      inc(no) ;   
      now := now^.next ;  
    end;

LIFO
  no := 1 ;
  now := tail ; 
  while now <> nil do
    begin
      writeln (No,'. ID MAHASISWA :',Now^.id_mhs) ;
      writeln ('   NAMA :',Now^.nama) ;
      writeln ('   PRODI :',Now^.prodi) ;
      writeln ('   SEMESTER :',Now^.semester) ;
      writeln ;
      inc(no) ;   
      now := now^.prev ;  
    end;


No comments:

Post a Comment