5 Feb 2015

Delete Before simpul pointer dalam pascal

 Delete Before
Yaitu menghapus data di sebelah kanan dari simpul

program dlete;

{$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 insertAfter ;      // insert After
begin
  new(now) ;
  if head =nil then
     begin
       head := now ;
       tail := now ;
       head^.prev := nil ;
       tail^.prev := nil ;
     end
  else
    begin
      tail^.next := now ;
      now^.prev := tail ;
      tail := now ;
      tail^.next := nil ;
    end;
end;

procedure deleteBefore ;
begin
  now := head ;
  if now <> tail then
    begin
      head := now^.next ;
      head^.prev := nil ;
    end
  else
    begin
      tail := nil ;
      head := nil ;
    end;
    if now <> nil then Dispose(now) ;
end;

begin
  writeln('DATA MAHASISWA');
  writeln('__________________________');
  writeln ;
  repeat
     insertAfter ;
      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 := 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;

  write('Apakah anda ingin menghapus Data (Y/T)? : ');Readln(jawab);
  if UpCase(jawab)='Y' then deleteBefore ;

  writeln ;
  writeln('DATA MAHASISWA');
  writeln('__________________________');
  writeln ;
  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;

  readln ;
end.

No comments:

Post a Comment