5 Feb 2015

Double Link list Insert After Pascal


Linked list mempunyai karakteristik dapat bergerak maju dan mundur(ke kanan dan ke kiri) oleh karena pergerakanya yang demikian ini,operasi operasi insert pada link list ini dapat digunakan program FIFO atau LIFO sekaligus. Berbeda dengan singgle lingked list yang operasi program FIFO atau LIFO di tempatkan pada insert itu sendiri 

Insert After Insert After ini menambahkan simpul di sebelah kanan (di belakang)
dari sebuah Double Link List . Untuk Membuat program FIFO LIFO di tempatkan pada output dari program

program Project2;

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 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;


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;
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