program Hello;
Type
TStudRec = Record
Stu_Name, Stu_Surname : String[40];
Stu_ID, Stu_Age : Integer;
Stu_Gender : Char;
End;
TNodePtr = ^TNode;
TNode = Record
StudRec : TStudRec;
NodePtr : TNodePtr;
End;
Var
Head, Tail : TNodePtr;
SampRec : TStudRec;
Procedure AddNode(StudRec : TStudRec);
Var
Node : TNode;
Begin
Node.StudRec := StudRec;
New(Node.NodePtr);
If (Head=nil) Then
Begin
New(Head);
New(Tail);
Head^ := Node;
End Else
Begin
Tail^.NodePtr^ := Node;
End;
Tail^ := Node;
End;
Procedure InsertRecordByIndex(Index : Integer; StudRec : TStudRec);
Var
i : Integer;
TempPtr : TNodePtr;
Node, TempNode : TNode;
Done : Boolean;
Begin
Done := False;
If Head = nil Then
Exit;
i := 0;
TempPtr := Head;
Node.StudRec := StudRec;
New(Node.NodePtr);
If (Index = 0) Then
Begin
TempNode := Head^;
Head^ := Node;
Node.NodePtr^ := TempNode;
Done := True;
End;
If not Done Then
While (i < Index-1) do
Begin
If (TempPtr^.NodePtr^.NodePtr = nil) then
Begin
Done := True;
Break;
End;
i := i + 1;
TempPtr := TempPtr^.NodePtr;
End;
If not Done Then
Begin
TempNode := TempPtr^.NodePtr^;
TempPtr^.NodePtr^ := Node;
Node.NodePtr^ := TempNode;
End;
End;
Procedure InsertRecordByID(ID : Integer; StudRec : TStudRec);
Var
TempPtr : TNodePtr;
Node, TempNode : TNode;
Done : Boolean;
Begin
Done := False;
If Head = nil Then
Exit;
TempPtr := Head;
Node.StudRec := StudRec;
New(Node.NodePtr);
If (TempPtr^.StudRec.Stu_ID = ID) Then
Begin
TempNode := Head^;
Head^ := Node;
Node.NodePtr^ := TempNode;
Done := True;
End;
While not Done do
Begin
If (TempPtr^.StudRec.Stu_ID = ID) Then
Break;
If (TempPtr^.NodePtr^.NodePtr = nil) Then
Begin
Done := True;
Break;
End;
TempPtr := TempPtr^.NodePtr;
End;
If not Done Then
Begin
TempNode := TempPtr^.NodePtr^;
Node.NodePtr^ := TempNode;
TempPtr^.NodePtr^ := Node;
End;
End;
procedure DisplayList;
Var
TempPtr : TNodePtr;
Done : Boolean;
Begin
Done:=false;
if Head = nil Then
Exit;
TempPtr := Head;
While not Done do
Begin
If (TempPtr^.NodePtr^.NodePtr = nil) Then
Begin
Writeln(TempPtr^.StudRec.Stu_Name);
Done := True;
Break;
End;
Writeln(TempPtr^.StudRec.Stu_Name);
TempPtr := TempPtr^.NodePtr;
End;
end;
Procedure InitLinkedList;
Begin
Head := nil;
Tail := Head;
End;
begin
InitLinkedList;
SampRec.Stu_Name:='dan';
SampRec.Stu_Surname:='araneta';
SampRec.Stu_ID:=1;
SampRec.Stu_Age:=19;
SampRec.Stu_Gender:='M';
AddNode(SampRec);
SampRec.Stu_Name:='mark';
SampRec.Stu_Surname:='juanites';
SampRec.Stu_ID:=2;
SampRec.Stu_Age:=19;
SampRec.Stu_Gender:='M';
AddNode(SampRec);
SampRec.Stu_Name:='Donson';
SampRec.Stu_Surname:='Sadava';
SampRec.Stu_ID:=3;
SampRec.Stu_Age:=19;
SampRec.Stu_Gender:='M';
AddNode(SampRec);
SampRec.Stu_Name:='Karla';
SampRec.Stu_Surname:='Lidres';
SampRec.Stu_ID:=4;
SampRec.Stu_Age:=19;
SampRec.Stu_Gender:='F';
AddNode(SampRec);
DisplayList;
end.