Во-первых: У тебя именование переменных — полное г…!
Введём новые имена, которые будут понятны без слов:
var
…
First, Tmp, Cur : List;
Тогда можно переписать и чтение файла:
Read(F, K); Min := K;
New(First); First^.N := K; First^.Next := nil; Cur := First;
for i := 2 to N do
begin
Read(F, K);
New(Tmp); Tmp^.N := K; Tmp^.Next := nil; Cur^.Next := Tmp; Cur := Tmp;
if K < Min then Min := K;
end;
Во-вторых: Минимальных элементов в списке может быть несколько — т.е. удалить их нужно все?
В-третьих: В однонаправленном списке при удалении элемента нужно знать адрес предыдущего:
{ Удаление элементов со значением Min }
while (First nil) and (First^.N = Min) do { Если в начале списка Min }
begin
Cur := First; First := Cur^.Next; Dispose(Cur);
end;
Cur := First;
while Cur^.Next nil do
if Cur^.Next^.N = Min then { Если за текущим элементом списка Min }
begin
Tmp := Cur^.Next; Cur^.Next := Tmp^.Next; Dispose(Tmp);
end
else { Берём следующий }
Cur := Cur^.Next;