 |
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..100] of integer;
B:array[1..100] of 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>0) do
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>0) do
begin
k:=j;
j:=PO[j];
end;
if (A[j]=x2)and(PO[j]>0) then 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>0) do
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...
|
 |