Я FAQ почитала и натворила сама не знаю что (но вроде похоже на двусвязный список), но оно все работает только с маленькой ошибкой, а как в односвязный переделать я совсем не знаю.... Задачка вот такая: Составить программу, которая удаляет из списка L все отрицательные элементы. Вот. программа моя....
Program laba_13;
uses crt;
type
point = ^item;
item = record
numer: integer;
next: point;
end;
procedure print(first: point);
var r: point;
begin
r:=first;
while r<>nil do begin
writeln(' ', r^.Numer);
r:=r^.next;
end;
end;
var
p, r, first: point;
found: boolean;
n, E: integer;
begin
clrscr;
first:=nil;
write('Первый элемент : ');
readln(n);
while n<>0 do begin
new®;
r^.next:=first;
r^.Numer:=n;
first:=r;
write('Следующий элемент (0 для выхода) : ');
readln(n);
end;
writeln;
write('Исходный список : ');
writeln;
print(first);
repeat
found:=false;
p:=first;
while not found and (p^.Next<>nil) do
if p^.next^.numer<0 then found:=true
else p:=p^.next;
if found then begin
r:=p^.next;
p^.next:=r^.next;
dispose®;
end;
until not found;
writeln;
write('Получившийся список : ');
writeln;
print(first);
readln;
end.
Вот а ошибка такая-когда последний элемент вводится отрицательный, то и его выдает тоже (а не надо)...Как с этим быть? И еще хотела спросить вот он выписывает исходный список и получившийся в обратном порядке...а это можно изменить (что бы выписывалось так, как вводилось), если да то как...?
Подскажите пожалуйста кто-нибудь, если можно и не сложно... .....