Program Spisok;
uses
crt;
type
Tinf=integer;
List=^TList;
TList=record
data:integer;
next:List;
end;
var b: integer;
m: array[1..100] of integer;
n: integer;
procedure AddElem(var spis1:List;znach1:integer);
var
tmp:List;
begin
if spis1=nil then
begin
GetMem(spis1,sizeof(TList));
tmp:=spis1;
end
else
begin
tmp:=spis1;
while tmp^.next<>nil do
tmp:=tmp^.next;
GetMem(tmp^.next,sizeof(TList));
tmp:=tmp^.next;
end;
tmp^.next:=nil;
tmp^.data:=znach1;
end;
procedure Print(spis1:List);
begin
if spis1=nil then
begin
writeln('пусто');
exit;
end;
while spis1<>nil do
begin
Write(spis1^.data, ' ');
spis1:=spis1^.next
end;
end;
Procedure FreeStek(spis1:List);
var
tmp:List;
begin
while spis1<>nil do
begin
tmp:=spis1;
spis1:=spis1^.next;
dispose(tmp);
end;
end;
/////////тут я пытаюсь найти первый нулевой элемент и удалить его///
//procedure SearchElemZnach(spis1:List); //
//var c: integer; //
// i: integer; //
//begin //
// if spis1=nil then //
// begin //
// writeln('пусто'); //
// exit; //
// end; //
// while spis1<>nil do //
// begin //
// Write(spis1^.data, ' '); //
// c:=spis1^.data; //
// if spis1^.data=0 then //
// dispose (spis1^.next); //
// spis1:=spis1^.next; //
// end; //
// writeln; //
// writeln('Выводим '); //
// for i:=1 to n do //
// begin //
// write(spis1); //
// end; //
// readln; //
//end; //
////////////////////////////////////////////////////////////////////
var
Spis,tmpl:List;
znach:integer;
ch:char;
i: integer;
begin
Spis:=nil;
begin
write('Введите кол-во ');
readln(n);
for i:=1 to n do
begin
write(i,'-й');
readln(znach);
m:=znach;
if i=1 then
begin
b:=znach;
end;
AddElem(Spis,znach);
end;
readln;
clrscr;
Print(Spis);
readln;
clrscr;
SearchElemZnach(spis);
readln;
end;
FreeStek(spis);
end.
помогите доделать плиз, Срочно
найти и удалить первый нулевой элемент в списке
а в чем собственно проблема та? Как выделал память под него, так и удаляй. Связи наладить надо между э-тами списка при удалении, если в нем есть еще э-ты. В инете полно примеров.