Linked List

 

 

            This technique is widely used by database systems in these days. It provides fast access to the records. Here you can find the algorithm of creating, adding, searching and erasing methods in Linked list.

 

 

 

The Algorithm

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


C Source Code

 

{    
     1- Create Linked List
     2- Search
     3- Erase
     4- Add
 
  B[] : stores input numbers.
  A[] : stores array PO[] 's real numbers.
  PO[]: Pointer array.
  m   : size of B[].
  n   : size of arrays A[] and  PO[].
}
uses crt;
var
 PO,A:array[0..100of integer;
    B:array[1..100of integer;
  n,m:integer; ch:char;
Procedure giris; { reads array B[] from keyboard}
var i:integer;
begin
  write('size of array:');read(m);
  for i:=1 to m do read(B[i]);
end;
 
Procedure Ekle(x,k,j:integer); { Adds 'x' to Linked List }
begin
 while (x>A[j])and(j>0do
  begin
   k:=j;
   j:=PO[j];
  end;
 n:=n+1;
 A[n]:=x;
 PO[k]:=n;
 PO[n]:=j;
end;
 
Procedure ekrana_yaz; { Displays the arrays A[] and PO[] to the screen }
var i,k:byte;
begin
 writeln;
 write('   ____Array___Pointer____    ');
 k:=wherey+1;
 for i:=0 to n do
  begin
   gotoxy(8,k+i);write(A[i]:3);
   gotoxy(15,k+i);write(PO[i]:3);
  end;
end;
 
Procedure LList_Olustur; { Creates a Linked List array from B[]  }
var i:integer;
begin
 PO[0]:=1;
 PO[1]:=-1;
 A[1]:=B[1];
 n:=1;
 for i:=2 to m do Ekle(B[i],0,PO[0]);
 ekrana_yaz;
end;
 
Procedure Ekle_X; { Adds a number to Linked List }
var x2:integer;
begin
 writeln;
 write(' Input the number to be added:');readln(x2);
 ekle(x2,0,PO[0]);
 clrscr;
 ekrana_yaz;
end;
 
Procedure Ara; { Searchs a number into Linked List }
var j,k,x2:integer;
begin
 writeln;
 write('Input the number to be searched:');readln(x2);
 j:=PO[0];
 k:=j;
 while (A[j]<>x2)and(x2>0do
  begin
   k:=j;
   j:=PO[j];
  end;
 if (A[j]=x2)and(PO[j]>0then write('Searched  ',A[j],' 's place is ',j)
   else write('Number is not in array  :-(');
end;
 
Procedure Silme; { Erases a number from Linked List}
var i,j,k,x2:integer;
begin
 writeln;
 write(' Input the number to be erased:');readln(x2);
 j:=PO[0];
 k:=j;
 while (x2<>A[j])and(j>0do
  begin
   k:=j;
   j:=PO[j];
  end;
 if A[j]=x2 then
   begin
    writeln('Number is found and erased...');
    PO[k]:=j;
    PO[j]:=-2;
    clrscr;
    ekrana_yaz;
   end
  else
    begin
       writeln('Number did not found...');
    end;
end;
 
Procedure ana_yaz; { main procedure }
begin
 writeln;
 writeln('Add <E>, Erase <S>, Search <A>...');
 write('Press another key for exit...');
end;
 
Procedure Ana; { Operation selection }
begin
 ch:=readkey;
 case upcase(ch) of
  'E'begin Ekle_X; ana_yaz; ana; end;
  'A'begin Ara; ana_yaz; ana; end;
  'S':begin Silme; ana_yaz; ana; end;
  #13:ana; 
 end;
end;
 
 BEGIN
 clrscr;
 giris;
 LList_Olustur;
 ana_yaz;
 Ana;
END.

 

Sample Execution

 

size of array:6

44

56

33

14

28

41

 

   ____Array___Pointer____

             0           4

           44           2

           56          -1

           33           6

           14           5

           28           3

           41           1

Add <E>, Erase <S>, Search <A>...

Press another key for exit...

Input the number to be added:20

 

   ____Array___Pointer____

             0          4

           44          2

           56         -1

           33          6

           14          7

           28          3

           41          1

           20          5

Add <E>, Erase <S>, Search <A>...

Press another key for exit...

 

   ____Dizi___Pointer____

             0          4

           44          2

           56         -1

           33          6

           14          7

           28          3

           41          1

           20          5

Add <E>, Erase <S>, Search <A>...

Press another key for exit...

Input the number to be erased:28

 

   ____Array___Pointer____

             0          4

           44          2

           56         -1

           33          6

           14          7

           28        -2

           41          1

           20          5

Add <E>, Erase <S>, Search <A>...

Press another key for exit...

Input the number to be searched:56

Number is not in array...

Add <E>, Erase <S>, Search <A>...

Press another key for exit...

 

 
Copyright by Chasan Chouse