Страница 1 из 1

Написать процедуру включения элементов в очередь

Добавлено: 07 дек 2010, 13:01
Женяша
Написать процедуру включения элементов в очередь и процедуру исключения из очереди
Помогите поалуйста, кто чем может

Re: Написать процедуру включения элементов в очередь

Добавлено: 07 дек 2010, 13:33
Женяша
[syntax='pascal']
{Процедура добавляющая элемент в очередь}
procedure AddElem(var stek1:List;znach1:TInf);
var
tmp:List;
begin
GetMem(tmp,sizeof(TList)); {выделяем в памяти место для нового элемента}
tmp^.next:=stek1; {указатель на следующий элемент "направляем" на хвост очереди}
tmp^.data:=znach1; {добавляем к элементу данные}
stek1:=tmp; {хвост очереди изменился, надо перенести и указатели на неё}
end;
{Процедура удаления элемента по указателю}
Procedure DelElem(var stek1:List;tmp:List);
var
tmpi:List;
begin
if (stek1=nil) or (tmp=nil) then {если очередь пуст или указатель никуда не указывает, то выходим}
exit;
if tmp=stek1 then {если мы удаляем элемент который является хвостом очереди, то}
begin
stek1:=tmp^.next;{следует перенести вершину и}
FreeMem(tmp,SizeOf(TList)); {высвободить память из под элемента}
end
else {в случае, если удаляемый элемент не хвост очереди, то}
begin
tmpi:=stek1; {ставим указатель на хвост очереди}
while tmpi^.next<>tmp do {доходим до элемента стоящего "перед" тем, который нам следует удалить}
tmpi:=tmpi^.next;
tmpi^.next:=tmp^.next; {указатель элемента переносим на следующий элемент за удаляемым}
FreeMem(tmp,sizeof(TList)); {удаляем элемент}
end;
end;
[/syntax]
Это код, но начинает выдавать ошибки с самого начала
Помогите найти их)))

Re: Написать процедуру включения элементов в очередь

Добавлено: 07 дек 2010, 16:05
Игорь Акопян
какой конкретно код приводит к ошибке? как вызываются эти процедуры?

Re: Написать процедуру включения элементов в очередь

Добавлено: 07 дек 2010, 16:20
Женяша
1-ый код самое начало программы

Re: Написать процедуру включения элементов в очередь

Добавлено: 09 дек 2010, 16:12
Игорь Акопян
стало-быть в процедуре добавления элемента....
навскидку, емнип, SizeOf(TList) = 4 байта всегда, ибо указатель

мобыть там должно быть SizeOf(List) - без Т?
типов вы не приводите...