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

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Женяша
Сообщения: 3
Зарегистрирован: 07 дек 2010, 12:58

Написать процедуру включения элементов в очередь и процедуру исключения из очереди
Помогите поалуйста, кто чем может
Женяша
Сообщения: 3
Зарегистрирован: 07 дек 2010, 12:58

[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]
Это код, но начинает выдавать ошибки с самого начала
Помогите найти их)))
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

какой конкретно код приводит к ошибке? как вызываются эти процедуры?
Изображение
Женяша
Сообщения: 3
Зарегистрирован: 07 дек 2010, 12:58

1-ый код самое начало программы
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

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

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