Lista encadeada em Pascal

Olá pessoal, gostaria de pedir ajuda em uma questão em pascal que estou fazendo.
A questão pede o seguinte:

“Crie um programa em PASCAL que realize o cadastro de alunos de uma escola. Primeiramente, o programa deverá ler um valor válido para a variável n no intervalo [3,40], a qual indicará a quantidade de alunos a serem lidos. Cada aluno precisa ter os seguintes dados (registro): (i) matrícula - integer; (ii) nome – 30 caracteres; (iii) telefone – 20 caracteres. Os dados deverão ser armazenados em uma lista encadeada, cuja a inserção de cada elemento deverá ser no início da lista. Após a conclusão do cadastro dos alunos na lista, exibir os dados de todos os n alunos percorrendo a lista encadeada.”

Eu ja fiz uma parte do código, entretanto, não sei como fazer uma lista encadeada e ja fiz várias pesquisas na net mas nenhumas delas realmente me ajudou.

Outro problema que estou encontrando em relação ao meu codigo é que ele não mostra todos os valores cadastrados no vetor apenas o ultimo que foi digitado. Segue o codigo:

Program calcula_a_media ;
var
n,matricula,i:integer;
nome:string[30];
tel:string[20];
vetor: array[3…40] of integer;
Begin
writeln(‘Digite a quantidade de alunos:’);
read(n);
for i:= 3 to n do
begin
writeln(’###################’);
writeln(‘Digite a matricula’);
read(matricula);
writeln(‘Digite o nome’);
read(nome);
writeln(‘Digite o telefone’);
read(tel);

end;
writeln(’’);
writeln(’#################’);
writeln(‘Alunos cadastrados:’);
writeln(’’);
for i:=3 to n do
begin
writeln(‘Matricula:’,matricula);
writeln(‘Nome:’,nome);
writeln(‘Telefone’,tel);
writeln(’’);
end;
End.

Por fim, preciso de ajuda para criar uma lista encadeada e mostrar todos as informações cadastradas no vetor. Se possivel alguem pode me ajda?