Помощь - Поиск - Пользователи - Календарь
Полная версия: динамические структуры(списки)
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Renbo
Необходимо исключить элемент, стоящий перед i-тым, тоесть как я понял делаем запрос на номер элемента, а потом удаляем перед ним стоящий, так?

Вот я сделал процедуру:


procedure del_i_1_elem(First:EL);
VAR
T,Q,R:EL;
K,N:integer;
i:integer;
Begin
N:=Count_el(First);
writeln('Введите i:');
readln(i);
IF N=1 then {esli y nas v spiske 1 element}
begin
writeln('У вас только 1 элемент, удаление предыдущего не возможно');
readkey;
exit;
end;
IF (i < 1) or (i > N) then
begin
writeln('i задано некорректно');
readkey;
exit;
end;
IF i=2 then {удаление первого элемента списка}
begin
p:=First;
First:=First^.Next;
dispose(p);
end
ELSE {удаление из середины}
begin
T:=First;
Q:=Nil;
K:=1;
While K < i-1 do
begin
inc(K);
Q:=T;
T:=T^.Next;
end;
R:=T^.Next;
Q^.Next:=R;
Dispose(T);
end;
End;



Вроде бы пашет нормально, только вот если i введём как 2, то он место удаления элемента последнее инф.поле очистит, первое заменит на крякозябры из цифр. В чём проблема? wacko.gif

Это исходная допустим табличка:
----------------------------------------------------------
№ * Табельный номер * Фамилия
------------------------------------------------------------
1 * 111 * AAA
2 * 222 * BBB
3 * 333 * CCC
4 * 555 * GGG


А вот что получаем на выходе:

№ * Табельный номер * Фамилия
------------------------------------------------------------
1 * 23616 *
2 * 222 * BBB
3 * 333 * CCC
4 * 555 * GGG

volvo
Сорри, ты же передаешь First по значению, а при n = 2 значение First меняется, надо передавать по ссылке...
Renbo
Цитата(volvo @ 1.05.2007 19:37) *

Сорри, ты же передаешь First по значению, а при n = 2 значение First меняется, надо передавать по ссылке...



точно, спасиб, исправил, что-то тормозной день сегодня... wacko.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.